Error: darwin-x64' binaries cannot be used on the 'linux-x64' platform (AWS lambda + typescript + webpack sharp module )
Error: darwin-x64' binaries cannot be used on the 'linux-x64' platform (AWS lambda + typescript + webpack sharp module )
aws lambda with typescript 在通过 webpack 打包时发生错误。
在捆绑 webpack 之前,我做了“npm i --arch=x64 --platform=linux --target=12.14.1 sharp”并且 labmda 工作正常。
但是,lambda 上传 zip 大小越来越大。
所以,我想使用 serverless-webpack 调整 lambda 上传 zip 大小。
除了使用 sharp 模块外,图像 lambda 运行良好。
我不知道怎么办。
我做到了:
- 删除node_modules和package-lock.json并安装依赖(也安装了sharp)
- 删除 node_modules/sharp 并安装 sharp(lambda 环境 - linux、x64、node 版本)
- 在serverless中设置serverless-webpack配置
: packagerOptions ( scrips ) - 重建清晰的 lambda 环境
但是,lambda 无法正常工作。
而且看了很多资料
[lambda linux 环境]
[无服务器网络包]
https://github.com/serverless-heaven/serverless-webpack/issues/396
谢谢!
[编辑]
我的本地环境:Mac
生产环境:linux
也许,我认为带有“--platform”的 npm 命令在 mac 中不起作用。
此外,我使用 aws codebuild 解决了这个问题。
我发布了答案。
但是,它在我的本地 [Mac]
中不起作用
我通过告诉 webpack 在运行 npm install 后重新安装包来让它工作:
webpack:
includeModules:
forceExclude:
- aws-sdk
packagerOptions:
scripts:
- rm -rf node_modules/sharp
- npm install --arch=x64 --platform=linux sharp
我使用 aws codebuild 解决了这个问题。
codebuild 有 linux 和 node.js 运行时。
因此,我 运行 在 aws codebuild ( https://sharp.pixelplumbing.com/install )
中执行以下命令
rm -rf node_modules/sharp
npm install --arch=x64 --platform=linux sharp
sharp 模块正常工作。
我通过使用 sam cli 使用此命令构建它来使其工作
sam build -u
此命令在具有与 lambda 相似环境的容器中构建代码
Dave Cowart 的回答对我帮助很大,但在 repo 中有多个 lambda 函数,我不想将 sharp 安装到我的所有函数中。
这是我的解决方案:
serverless.yml
webpack:
webpackConfig: 'webpack.config.js'
includeModules:
forceExclude:
- aws-sdk
packagerOptions:
scripts:
- rm -rf node_modules/sharp
- npm install --production --arch=x64 --platform=linux
您实际上不需要在安装脚本中指定 sharp。使它成为一个通用的 npm install 意味着它只会在 package.json 中重新安装 sharp(如果它由于 webpack tree shaking 而未被使用则不会)。
aws lambda with typescript 在通过 webpack 打包时发生错误。
在捆绑 webpack 之前,我做了“npm i --arch=x64 --platform=linux --target=12.14.1 sharp”并且 labmda 工作正常。
但是,lambda 上传 zip 大小越来越大。
所以,我想使用 serverless-webpack 调整 lambda 上传 zip 大小。
除了使用 sharp 模块外,图像 lambda 运行良好。
我不知道怎么办。
我做到了:
- 删除node_modules和package-lock.json并安装依赖(也安装了sharp)
- 删除 node_modules/sharp 并安装 sharp(lambda 环境 - linux、x64、node 版本)
- 在serverless中设置serverless-webpack配置 : packagerOptions ( scrips ) - 重建清晰的 lambda 环境
但是,lambda 无法正常工作。
而且看了很多资料
[lambda linux 环境]
[无服务器网络包]
https://github.com/serverless-heaven/serverless-webpack/issues/396
谢谢!
[编辑]
我的本地环境:Mac
生产环境:linux
也许,我认为带有“--platform”的 npm 命令在 mac 中不起作用。
此外,我使用 aws codebuild 解决了这个问题。
我发布了答案。
但是,它在我的本地 [Mac]
中不起作用我通过告诉 webpack 在运行 npm install 后重新安装包来让它工作:
webpack:
includeModules:
forceExclude:
- aws-sdk
packagerOptions:
scripts:
- rm -rf node_modules/sharp
- npm install --arch=x64 --platform=linux sharp
我使用 aws codebuild 解决了这个问题。
codebuild 有 linux 和 node.js 运行时。
因此,我 运行 在 aws codebuild ( https://sharp.pixelplumbing.com/install )
中执行以下命令rm -rf node_modules/sharp
npm install --arch=x64 --platform=linux sharp
sharp 模块正常工作。
我通过使用 sam cli 使用此命令构建它来使其工作
sam build -u
此命令在具有与 lambda 相似环境的容器中构建代码
Dave Cowart 的回答对我帮助很大,但在 repo 中有多个 lambda 函数,我不想将 sharp 安装到我的所有函数中。
这是我的解决方案:
serverless.yml
webpack:
webpackConfig: 'webpack.config.js'
includeModules:
forceExclude:
- aws-sdk
packagerOptions:
scripts:
- rm -rf node_modules/sharp
- npm install --production --arch=x64 --platform=linux
您实际上不需要在安装脚本中指定 sharp。使它成为一个通用的 npm install 意味着它只会在 package.json 中重新安装 sharp(如果它由于 webpack tree shaking 而未被使用则不会)。