Не могу найти модуль "кукловод" - PullRequest
0 голосов
/ 13 декабря 2018

В среде выполнения AWS Lambda / NodeJS я пытаюсь импортировать по абсолютному пути (/opt/nodejs/node_modules/puppeteer).

Источник работает нормально локально, но, как только он объединяется с Webpack / serverless-webpack и запускается вAWS Lambda, require('puppeteer') приводит к:

{"errorMessage":"Cannot find module 'puppeteer'","errorType":"Error","stackTrace":["webpackMissingModule (/var/task/src/render/handler.js:643:89)","/var/task/src/render/handler.js:643:173","next (native)","step (/var/task/src/render/handler.js:608:191)","/var/task/src/render/handler.js:608:361"]}

Я проверил:

  • Уровень AWS Lambda установлен на /opt.
  • Путь /opt/nodejs/node_modules/puppeteer существует.
  • NODE_PATH правильно включает /opt/nodejs/node_modules

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

npm i --save puppeteer приводит к слишком большой упаковке.(Максимум 50 МБ для Lambdas.)

Таким образом, вместо этого кукловод был установлен с npm i --save-dev puppeteer --ignore-scripts.(Игнорируйте сценарии, чтобы предотвратить установку Chromium.) Плагин serverless-webpack должен был указывать игнорировать кукловода в его упаковке.(В противном случае кукловод раздувает пакет.)

Модуль кукловода был помещен в слой (в структуре папок, упомянутой в вопросе), и require('puppeteer') теперь работает.

0 голосов
/ 13 декабря 2018

Вы должны установить свой модуль с флагом save перед загрузкой вашего почтового индекса в Amazon:

npm i puppeteer --save
...