簡體   English   中英

錯誤:darwin-x64' 二進制文件不能在 'linux-x64' 平台上使用(AWS lambda + typescript + webpack 銳模塊)

[英]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 除了使用夏普模塊外工作良好。

我不知道該怎么做。

我做了

  1. 刪除 node_modules 和 package-lock.json 並安裝依賴項(也安裝了sharp)
  2. 刪除node_modules/sharp並安裝sharp(lambda環境-linux,x64,節點版本)
  3. 在 serverless 中設置 serverless-webpack 配置:packagerOptions ( scrips ) - 重建銳利的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM