Sam生成失败,原因是:生成失败错误:NodejsNpmBuilder:NpmPack-NPM失败:NPM ERR!代码



我正在学习如何在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

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

我在wsl2中遇到了同样的问题,我通过安装带有nvm的新版本nodejs(v14.17.1(解决了这个问题https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-wslhttps://github.com/nvm-sh/nvm#git-安装

我也遇到了同样的问题。我通过lambda文件夹中的npm init命令修复了它,该文件夹是我们为各个lambda函数创建的。这将通过创建package.json.来修复版本

也许在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上都遇到过这种情况。

正如Mark所建议的,您可能可以通过使用构建容器来解决这个问题。这是通过将-u添加到sam build的参数中来完成的。

根据您使用的发行版,您可能能够更新zlib。

请注意,如果您在Fedora上,zlib更新可能需要一段时间:

  • Bug 2069002-zlib-1.2.12可用
  • Bug 2068066-CVE-2018-25032 zlib:在压缩(而不是解压缩(某些输入时在zlib中发现一个缺陷

最新更新