错误:darwin-x64' 二进制文件无法在 'linux-x64' 平台上使用(AWS lambda + typescript + webpack Sharp 模块)

hyu*_*ock 4 node.js webpack aws-lambda sharp

通过 webpack 捆绑时,带有 typescript 的 aws lambda 发生错误。

在捆绑 webpack 之前,我做了“npm i --arch=x64 --platform=linux --target=12.14.1 Sharp”并且 labmda 工作正常。

但是,lambda 上传的 zip 大小越来越大。

所以,我想使用 serverless-webpack 调整 lambda 上传 zip 大小。

除了使用 Sharp 模块之外,图像 lambda 运行良好。

我不知道该怎么办。

我做了

  1. 删除node_modules和package-lock.json并安装依赖项(也安装了sharp)
  2. 删除node_modules/sharp并安装sharp(lambda环境-linux,x64,node版本)
  3. 在 serverless 中设置 serverless-webpack 配置:packagerOptions ( scrips ) - 重建 Sharp lambda 环境

但是,lambda 无法正常工作。

而且我查了很多资料。

[lambda linux env]
在 AWS Lambda 函数内运行 Sharp 时出错:darwin-x64' 二进制文件无法在 'linux-x64' 平台上使用

[Serverless-webpack]
https://github.com/serverless-heaven/serverless-webpack/问题/396

谢谢你!


[编辑]

我的本地环境:Mac

生产环境:linux

也许,我认为带有“--platform”的 npm 命令在 mac 中不起作用。

此外,我使用 aws codebuild 解决了这个问题。

我发布了答案。

但是,它在我的本地 [Mac] 上不起作用

Dav*_*art 8

我通过告诉 webpack 在运行 npm install 后重新安装包来使其工作:

webpack:
  includeModules:
    forceExclude:
      - aws-sdk
  packagerOptions:
    scripts:
      - rm -rf node_modules/sharp
      - npm install --arch=x64 --platform=linux sharp
Run Code Online (Sandbox Code Playgroud)


hyu*_*ock 5

我使用 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
Run Code Online (Sandbox Code Playgroud)

Sharp模块工作正常。