Repository navigation
NPM install stucks with node:20 #1946
Description
Activity
I have the same issue with yarn
Reacted by Matteo Vivona, Kostiantyn, Pratik Soni, Vinicius Zucatti, Ali Moezzi, TRiazantsev, Zaffer and linh-nguyen-tpv-mtiSame here. My image works with Node 16, 18 and 19. With 20 even
corepack enablecommand gets stuckUpdate: on my pipeline based on Ubuntu-22.04 linux/amd64 works
Reacted by JacobDorman, Pratik Soni, Vinicius Zucatti, Ali Moezzi and BradfordI just tried on Ventura with an M2 chip and it didn't hang
I am ablwe to reproduce the behavior when disabling my network. I am wondering if some firewall rule might be blocking traffic.
Hi, I'm also facing the same issue. I'm using M1 Mac. I'm observing this issue since last week. I have tried Node 20,18 alpine, slim and latest. The issue persist.
I was able to run yarn and npm commands now after disabling Use Rosetta for x86/amd64 emulation on Apple Silicon option in docker settings. Not sure this is a fix.
Reacted by Louis OrleansI'm encountering the same issue - docker build hangs on
RUN npm install. The problem occurs when trying to build an image using--platform=linux/amd64on Docker Desktop Mac.(Why do this? I want to test an image on my mac laptop that will eventually run in an amd64 environment, and one apt dependency does not have an arm64 version)
Workarounds I found:
- Downgrade to the previous base node image (node:18.17.0, should be the case for node:20 as well)
- Turn off Rosetta, as @callmemaxi suggested (slow)
- Build for arm64 (causes issues if you need amd64)
Dockerfile
FROM --platform=linux/amd64 node:18 RUN npm install --loglevel verbose CMD index.jspackage.json
{ "name": "docker-bug", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "type": "module", "license": "ISC", "dependencies": { "chalk": "^5.3.0" } }index.js
import chalk from 'chalk'; console.log(chalk.green('Hello world'));Console output
$ docker build . -t node-docker-bug [+] Building 11.7s (4/5) docker:desktop-linux => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 120B 0.0s => [internal] load metadata for docker.io/library/node:18 0.3s => CACHED [1/2] FROM docker.io/library/node:18@sha256:ee0a21d64211d92d4340b225c556e9ef1a8bce1d5b03b49f5f07bf1dbbaa5626 0.0s => [2/2] RUN npm install --loglevel verbose 11.5s => => # npm info using npm@9.8.1 => => # npm info using node@v18.18.0 => => # npm verb title npm install => => # npm verb argv "install" "--loglevel" "verbose" => => # npm verb logfile logs-max:10 dir:/root/.npm/_logs/2023-09-25T19_40_55_092Z- => => # npm verb logfile /root/.npm/_logs/2023-09-25T19_40_55_092Z-debug-0.logReacted by Darko K, Andrew Torres, Manjunatha Poojari, Florian Denis, Sarah, Vladyslav Karpenko, Franck Nijhof, Seong Eun Lee, sekishankumar, MaxX and 3 moreReacted by Seong Eun Lee and Ali MoezziReacted by Seong Eun Lee, Lê Nguyễn Hùng Vỹ and Ali MoezziSame issue affecting npm and yarn when using
docker buildxand building for linux/arm/v7Reacted by Philip H., Olivér Falvai, Damien, fuhlich, Pierre-Gilles Leymarie, karique02, David Lievrouw, MaxX, Guilherme Sousa, mendhak and 2 moregot same issues , you can easily duplicate this issue with below commands
$ cat Dockerfile FROM node:lts-alpine RUN export PATH=/usr/local/bin:$PATH && npm install -g semver CMD ["semver", "--help"] $ export platform="linux/arm/v7" $ docker buildx build --progress=plain --platform "${platform}" --tag demo . ... #6 [2/2] RUN export PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && npm install -g semverThen it stucks at installation forever.
run tests on below platforms
linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x- platforms without problem:
linux/amd64,linux/arm64/v8,linux/ppc64le - platforms with
buildxhangs on problem:linux/s390x,inux/arm/v6,linux/arm/v7
Reacted by Philip H., wkw, Franck Nijhof, Guilherme Sousa, Ovler, snowdream, mendhak, Ali Moezzi and Mohamed Aziz Tousli- platforms without problem:
My workaround at the moment is to stay on Node 18.x.
I hope there will be a fix for thearmv6andarmv7architectures. Otherwise I will have to drop them.
Maybe Node 22.xReacted by Pierre and Ali MoezziAlso have the same issue, and reverted back to Node 18.x for my docker builds.
It seems that this is a duplicate of #1798? I see the same seqence of
mremapas reported in #1798 (comment) when usingstracewith the reproducer from #1946 (comment).Upgrading from Docker Desktop 4.21 to 4.26.1 (Latest at the time of this writing) seems to have fixed this problem for me on an M2 Mac.
- added a commit that references this issue
on Feb 4, 2024 Trigger
What triggered this problem for me was updating my
package-lock.jsonfrom version 1 to version 3.Solution
The key solution for me was using
npm install --no-audit, which also just makes it run much faster, and auditing can probably just be done independently of the normal build/CI process.Details
Here are some additional details I gathered before finding the final solution, in case it's helpful for others, or for debugging the root problem.
Sorta Solutions
These attempts somewhat worked but not in a satisfactory way...
-
Reverting back to my version 1
package-lock.jsonfile worked, but I didn't want to stick with this because it felt fragile and it was slow because npm had to recreate it each time I ran my docker-based build (unless in the docker cache). -
For 1 code repository, it worked to remove the
package-lock.jsonfile and recreate it, but this didn't work for my other repo.
Non-Solutions
These attempts didn't work...
- Flushing docker state with ...
docker container prune -a docker rm -f $(docker ps -qa) docker image prune -a docker volume prune docker volume rm $(docker volume ls -q) docker buildx prune- Reinstall docker at older versions (on linux mint) with instructions here https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository using the "specific version" instructions, something like ...
apt-cache madison docker-ce va=... # pick an older version from above apt-cache madison containerd.io vb=... # pick an older version from above apt-get install docker-ce=$va containerd.io=$vb # restarted-
Installing the latest LTS
nodecurrently 20.11.1 which containsnpmversion 10.2.4 -
Deleting and recreating my
package-lock.json(although it worked for the 1 repo mentioned above) -
Using
docker build --network=host
Reacted by Štěpán Rožník, Patrick Brophy and Jason Qiu-
52 remaining items
Sorry. Was a typo. I was using
pnpmthe whole wayEdit: nvm I was using npm, but why does it only in GitHub actions. Building it locally works fine.
In the second stage there is no pnpm as I only normally copy build results. So using npm should be fine
In my testing this only happens when running a musl Node build in an emulated environment, for instance my platform does not support armv7 natively
$ docker buildx inspect ... BuildKit version: v0.13.2 Platforms: linux/arm64, linux/amd64, linux/amd64/v2 $ docker run --rm --platform linux/arm/v7 -ti node:lts node -e "console.log(1)" exec /usr/local/bin/docker-entrypoint.sh: exec format errorAdding emulated support
$ docker run --rm --privileged tonistiigi/binfmt:qemu-v9.2.0-46 --install linux/arm/v7 installing: arm OK { "supported": [ "linux/arm64", "linux/amd64", "linux/arm/v7", "linux/arm/v6" ], "emulators": [ "python3.12", "qemu-arm", "qemu-x86_64" ] } $ docker buildx inspect BuildKit version: v0.13.2 Platforms: linux/arm64, linux/amd64, linux/amd64/v2, linux/arm/v7, linux/arm/v6Now, the following works
$ docker run --rm --platform linux/arm/v7 -ti node:lts node -e "console.log(1)" 1But the following hangs forever
$ docker run --rm --platform linux/arm/v7 -ti node:lts-alpine node -e "console.log(1)"There may be other conditions that also cause
npm installto hang, but this is the one that I've most consistently ran into and is doesn't seem related to the node version. Maybe a bug in QEMU?Reacted by Martin BerkaI can confirm the problem pipex has on a mac m1 pro.
It worked once, but after a uninstall and reinstall of binfmt it stopped working again. This is very weird
same issue with
FROM --platform=linux/amd64 node:22.4-bookworm- added a commit that references this issue
on Mar 18, 2025 - added a commit that references this issue
on Mar 18, 2025 Any plans to fix this issue? I migrated my Kubernetes cluster to use ARM-based nodes instead of AMD-based nodes, and I cannot deploy my Node-based applications anymore because of this.
There's more than one issue here. It no longer happens for me on the latest version of all involved packages, and I haven't had it happen in months.
If you can recreate it in a Docker container, providing a Docker file may help the maintainers debug this.
EDIT: There is a dockerfile provided above. Guess debugging is the next step.
There's more than one issue here. It no longer happens for me on the latest version of all involved packages, and I haven't had it happen in months.
If you can recreate it in a Docker container, providing a Docker file may help the maintainers debug this.
EDIT: There is a dockerfile provided above. Guess debugging is the next step.
As far as I tested, it is still not solved now
You can reproduce it with the following
Dockerfile,console.log(1)will hang:FROM node:lts-alpine RUN node -e "console.log(1)"
docker buildx build --platform linux/arm/v7 -t test .
Reacted by snowdreamSeems to be finally fixed now (run)!
Reacted by Kai Ren, Christian Sporer and SarahYes, for
linux/arm/v7andlinux/arm/v6now runs OK. Still hangs, though, onlinux/s390x.- added a commit that references this issue
on Apr 18, 2025 Lazerbeak12345 commented
on Oct 10, 2025 on Oct 10, 2025 · Hidden as outdatedshow commentMore actionsClosing as stale, since Node.js 20 reached end-of-life on 2026-04-30.
The remark in #1946 (comment) about
linux/s390xsounds like a emulation issue that can't be fixed here, since this repo does not supply emulation.Other remarks indicate that the initial issue may no longer be a problem in general.
Environment
Expected Behavior
NPM install should be started. I've tested this with node:18 image instead and it works. node:20-slim stucks too.
Current Behavior
NPM install does not start and stucks.
I've tried other npm commands like
npm cache clean --forcebut those stuck too.Possible Solution
Steps to Reproduce
I'm using the docker file from official nodejs example :
Additional Information