NodeJS 使用Sharp库运行AWS Lambda函数时出现问题

bfhwhh0e  于 2022-12-18  发布在  Node.js
关注(0)|答案(4)|浏览(264)

我通过aws-amplify CLI创建了一个lambda函数,这是在AWS研讨会(https://amplify-workshop.go-aws.com/70_generating_thumbnails/10_creating_a_photo_processor_lambda.html)之后完成的。看起来Node.js的冲突版本存在问题。
我相信夏普库是问题所在,所以我已经尝试将版本更改为最新版本,看看这是否会起到任何作用,但它并没有解决这个问题。
CloudWatch错误日志:

module initialization error: Error
was compiled against a different Node.js version using
NODE_MODULE_VERSION 67. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
at Object.Module._extensions..node (module.js:681:18)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/var/task/node_modules/sharp/lib/constructor.js:10:15)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)

我相信有一个简单的解决办法,但我不确定问题的根源在哪里。谢谢。

moiiocjp

moiiocjp1#

安装sharp时使用你的aws lambda节点版本。

rm -rf node_modules/sharp
npm install --arch=x64 --platform=linux --target=10.4.1 sharp
w8biq8rn

w8biq8rn2#

看起来您使用Node.js的lambda不兼容版本生成了node_modules。Lambda仅适用于supports Node.js 6.10和8.10。
尝试将您的本地节点版本更改为8.10,删除node_modulesnpm install,bundle文件夹(包括node_modules)并上传到lambda。

xuo3flqw

xuo3flqw3#

以下几点对我很有效:

npm_config_arch=x64 npm_config_platform=linux npm install sharp

出于某种原因,争论没有奏效。

sulc1iza

sulc1iza4#

我知道这个问题是老问题了。我也遇到过同样的麻烦,发现问题是当我们在windows机器中构建项目(层)并试图在lambda中运行它时。在Linux和Windows环境中构建的依赖关系是不同的。
尝试在Linux环境中构建和创建zip文件。这应该可以解决您的问题。

相关问题