'Sam build fails with: Build Failed Error: NodejsNpmBuilder:NpmPack - NPM Failed: npm ERR! code Z_DATA_ERROR

I'm learning how to create lambdas on aws. I'm following this official tutorial.

The commands I run:

sam init (default values for everything, I'm choosing template 8 - webapp backend)

cd sam-app

sam build

The output I'm getting is:

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

node version: 16.2.0

npm version: 7.13.0

sam version: 1.23.0

zlib version: 1:1.2.11-4

I'm not modifying any files - they're all generated by sam.



Solution 1:[1]

Try building this in a container. Use sam build -u

This worked for me, but I am not sure why it wouldn't build without this.

Solution 2:[2]

I had the same problem in wsl2, I have solved it by installing a newer version of nodejs(v14.17.1) with nvm https://docs.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-wsl https://github.com/nvm-sh/nvm#git-install

Solution 3:[3]

Maybe in your template file, you might be using the below type

Type: AWS::Lambda::Function

If that's the case then change the type to below one

Type: AWS::Serverless::Function

Solution 4:[4]

I was having the same issue. I fixed it by the npm init command inside the lambda folder that we create for individual lambda functions. This will fix the version by creating the package.json.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mark Hayward
Solution 2 Luis Encina
Solution 3 Ashok
Solution 4 Dharman