【发布时间】:2019-05-14 20:23:28
【问题描述】:
在 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
【问题讨论】:
-
包含
puppeteer-core并使用puppeteer作为开发依赖项实际上更合适,然后将基于您的环境的可执行路径传递给browser.launch()。 Puppeteer-core 没有捆绑铬,因此您可以安全地导入和使用它。基本 puppeteer 包将包含用于本地开发的 chromium,但由于是开发依赖项,因此不会捆绑。
标签: node.js webpack aws-lambda serverless-framework serverless-webpack-plugin