Не могу найти модуль "кукловод"
В среде выполнения 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 Layer устанавливается на
/opt
, - Путь
/opt/nodejs/node_modules/puppeteer
существует. NODE_PATH
правильно включает/opt/nodejs/node_modules
5 ответов
Вы должны установить свой модуль с save
пометка перед загрузкой вашего почтового индекса в Amazon:
npm i puppeteer --save
npm i --save puppeteer
приводит к слишком большой упаковке. (Макс. 50 МБ для Lambdas.)
Итак, вместо этого кукловод был установлен с npm i --save-dev puppeteer --ignore-scripts
, (Игнорируйте сценарии, чтобы предотвратить установку Chromium.) serverless-webpack
Плагин должен был сказать, чтобы игнорировать кукловода в его упаковке. (В противном случае кукловод раздул бы пакет.)
Модуль кукловода был помещен в слой (в структуре папок, упомянутой в вопросе) и require('puppeteer')
в настоящее время работает.
Если вы используете stencil.js, он дает очень похожую ошибку. Попробуйте обновить версию ядра трафарета как минимум до"@stencil/core": "^1.15.0"
В командной строке попробуйте
npm install -g npm-check-updates
ncu -u
Попробуйте запустить скрипт, задав переменную окружения $NODE_PATH. Такие как:
NODE_PATH=/opt/nodejs/node_modules /path/to/bin/node your-file.js
По определенной причине мне пришлось собрать версию узла из исходного кода, не влияя на текущую установку, и этот обходной путь сработал для меня.
У меня есть это решение, основанное на следующем вопросе здесь.
npm i puppeteer --save
Вы должны установить свой модуль с флагом сохранения перед загрузкой zip