log*_*icy 9 node.js webpack aws-lambda serverless-framework serverless-webpack-plugin
在 AWS Lambda/NodeJS 运行时中,我尝试从绝对路径 ( /opt/nodejs/node_modules/puppeteer)导入。
Source 在本地运行良好,但是,一旦与 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"]}
Run Code Online (Sandbox Code Playgroud)
我检查过:
/opt./opt/nodejs/node_modules/puppeteer确实存在。NODE_PATH 正确包括 /opt/nodejs/node_modulesAbd*_*ssi 18
save在将 zip 上传到 Amazon 之前,您必须安装带有标志的模块:
npm i puppeteer --save
Run Code Online (Sandbox Code Playgroud)
npm i --save puppeteer导致包太大。(Lambda 最大 50MB。)
因此,相反,puppeteer 安装了npm i --save-dev puppeteer --ignore-scripts. (忽略脚本以防止安装 Chromium。)serverless-webpack必须告知插件在其包装中忽略 puppeteer。(否则 puppeteer 会使包膨胀。)
puppeteer 模块被放在一个层中(在问题中提到的文件夹结构中),require('puppeteer')现在可以工作了。
| 归档时间: |
|
| 查看次数: |
19957 次 |
| 最近记录: |