在AWS /NodeJS运行时,我尝试从绝对路径(/opt/nodejs/node_modules/puppeteer)导入。
源在本地运行良好,但是,一旦与webpack/无服务器的webpack绑定并在AWS中运行,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"]}我查过了:
/opt上。/opt/nodejs/node_modules/puppeteer确实存在。NODE_PATH正确地包括/opt/nodejs/node_modules发布于 2018-12-13 15:24:09
在将您的zip上传到亚马逊之前,您必须安装带有save标志的模块:
npm i puppeteer --save发布于 2018-12-13 23:35:16
npm i --save puppeteer会导致一个太大的包。(Lambdas最多50 Max)
因此,取而代之的是,木偶技师安装了npm i --save-dev puppeteer --ignore-scripts。(忽略脚本以防止安装铬。)serverless-webpack插件必须被告知在其包装中忽略木偶师。(否则木偶师会把包裹弄得臃肿的。)
木偶机模块被放置在一个层中(在问题中提到的文件夹结构中),require('puppeteer')现在可以工作了。
发布于 2021-01-31 19:50:03
尝试通过强制环境变量$NODE_PATH来运行脚本。例如:
NODE_PATH=/opt/nodejs/node_modules /path/to/bin/node your-file.js由于一个特定的原因,我不得不在不影响当前安装的情况下从源代码构建一个节点版本,这个解决方案对我来说是可行的。
我要根据下面的问题here来解决这个问题。
https://stackoverflow.com/questions/53764902
复制相似问题