![](/img/trans.png)
[英]'darwin-arm64v8' binaries cannot be used on the 'darwin-x64' platform
[英]Error: darwin-x64' binaries cannot be used on the 'linux-x64' platform (AWS lambda + typescript + webpack sharp module )
aws lambda 和 typescript 在由 webpack 捆綁時發生錯誤。
在捆綁 webpack 之前,我做了“npm i --arch=x64 --platform=linux --target=12.14.1 sharp”,labmda 工作正常。
但是,lambda上傳zip尺寸越來越大。
所以,我想使用 serverless-webpack 調整 lambda 上傳 zip 的大小。
Image lambda 除了使用夏普模塊外工作良好。
我不知道該怎么做。
我做了:
但是,lambda 工作不正常。
我看了很多信息。
[λ linux 環境]
在 AWS Lambda function 中運行 Sharp 時出錯:darwin-x64 二進制文件不能在“linux-x64”平台上使用
[無服務器-webpack]
https://github.com/serverless-heaven/serverless-webpack/issues/396
謝謝!
[編輯]
我的本地環境:Mac
生產環境:linux
也許,我認為帶有“--platform”的 npm 命令在 mac 中不起作用。
此外,我使用 aws codebuild 解決了這個問題。
我發布了答案。
但是,它在我的本地 [Mac] 中不起作用
我通過告訴 webpack 在運行 npm 安裝后重新安裝 package 來使其工作:
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
鋒利的模塊工作正常。
我通過使用 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。 Making it a generic npm install means it will only reinstall sharp if it's in the package.json (which it won't be if it's not used due to webpack tree shaking).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.