Sam 构建失败:构建失败错误:NodejsNpmBuilder:NpmPack - NPM 失败:npm ERR!代码 Z_DATA_ERROR

问题描述 投票:0回答:5

我正在学习如何在 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 生成的。

node.js npm aws-lambda aws-sam aws-sam-cli
5个回答
9
投票

尝试在容器中构建它。 使用

sam build -u

这对我有用,但我不确定为什么没有它就无法构建。


5
投票

我也遇到了同样的问题。我通过我们为各个 lambda 函数创建的 lambda 文件夹内的

npm init
命令修复了该问题。这将通过创建 package.json 来修复版本。


3
投票

我在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


0
投票

也许在您的

template
文件中,您可能正在使用以下类型

Type: AWS::Lambda::Function

如果是这种情况,请将类型更改为以下类型

Type: AWS::Serverless::Function


0
投票

我怀疑您受到 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 更新可能需要一段时间:

© www.soinside.com 2019 - 2024. All rights reserved.