我正在学习如何在 aws 上创建 lambda。我正在关注这个官方教程。
我运行的命令:
sam init
(所有内容的默认值,我选择模板 8 - webapp 后端)
cd sam-app
sam build
我得到的输出是:
Building codeuri: /home/sam-app runtime: nodejs14.x metadata: {} functions: ['getAllItemsFunction', 'getByIdFunction', 'putItemFunction']
Running NodejsNpmBuilder:NpmPack
Build Failed
Error: NodejsNpmBuilder:NpmPack - NPM Failed: npm ERR! code Z_DATA_ERROR
npm ERR! errno -3
npm ERR! zlib: invalid distance too far back
npm ERR! A complete log of this run can be found in:
npm ERR! /home/username/.npm/_logs/2021-05-20T14_02_59_425Z-debug.log
节点版本:
16.2.0
npm 版本:
7.13.0
sam版本:
1.23.0
zlib版本:
1:1.2.11-4
我没有修改任何文件 - 它们都是由 sam 生成的。
尝试在容器中构建它。 使用
sam build -u
这对我有用,但我不确定为什么没有它就无法构建。
我也遇到了同样的问题。我通过我们为各个 lambda 函数创建的 lambda 文件夹内的
npm init
命令修复了该问题。这将通过创建 package.json 来修复版本。
我在wsl2中遇到了同样的问题,我通过使用nvm安装较新版本的nodejs(v14.17.1)解决了这个问题 https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-wsl https://github.com/nvm-sh/nvm#git-install
也许在您的
template
文件中,您可能正在使用以下类型
Type: AWS::Lambda::Function
如果是这种情况,请将类型更改为以下类型
Type: AWS::Serverless::Function
我怀疑您受到 https://github.com/aws/aws-sam-cli/issues/3965 的影响,这反过来可能与 zlib 1.2.11 问题有关,应该通过更新使用来修复zlib 1.2.12
我在 Fedora 36 和 Arch Linux 上都遇到过这个问题。
正如马克建议的那样,您可能可以通过使用容器进行构建来解决这个问题。这是通过将
-u
添加到 sam build
的参数来完成的。
根据您使用的发行版,您也许能够更新 zlib。
请注意,如果您使用的是 Fedora,zlib 更新可能需要一段时间: