Is there an existing issue for this?
This issue exists in the latest npm version
Current Behavior
Running npm install fails with "Exit handler never called!". This happened after a previous npm install failed with ENOTEMPTY (rename of node_modules/ajv-formats). I removed node_modules and ran npm install again; the second run produced this error instead.
Expected Behavior
npm install completes and installs dependencies.
Steps To Reproduce
- In a project with existing
package-lock.json, run npm install.
- If a previous install left
node_modules in a bad state, run rm -rf node_modules then npm install again.
Install fails with:
Environment
- OS: [e.g. macOS – Version 26.2 (25C56)]
- Node:
node -v v24.12.0
- npm:
npm -v 11.6.2
- Project: Node/npm project (e.g. React + Storybook + Vite).
; copy and paste output from `npm config ls`
; "default" config from default values
_auth = (protected)
access = null
all = false
allow-same-version = false
also = null
audit = true
audit-level = null
auth-type = "web"
before = null
bin-links = true
browser = null
ca = null
cache = "[redacted].npm"
cache-max = null
cache-min = 0
cafile = null
call = ""
cert = null
cidr = null
color = true
commit-hooks = true
cpu = null
depth = null
description = true
dev = false
diff = []
diff-dst-prefix = "b/"
diff-ignore-all-space = false
diff-name-only = false
diff-no-prefix = false
diff-src-prefix = "a/"
diff-text = false
diff-unified = 3
dry-run = false
editor = "vi"
engine-strict = false
expect-result-count = null
expect-results = null
fetch-retries = 2
fetch-retry-factor = 10
fetch-retry-maxtimeout = 60000
fetch-retry-mintimeout = 10000
fetch-timeout = 300000
force = false
foreground-scripts = false
format-package-lock = true
fund = true
git = "git"
git-tag-version = true
global = false
global-style = false
globalconfig = "/usr/local/etc/npmrc"
heading = "npm"
https-proxy = null
if-present = false
ignore-scripts = false
include = []
include-staged = false
include-workspace-root = false
init-author-email = ""
init-author-name = ""
init-author-url = ""
init-license = "ISC"
init-module = "[redacted].npm-init.js"
init-private = false
init-type = "commonjs"
init-version = "1.0.0"
init.author.email = ""
init.author.name = ""
init.author.url = ""
init.license = "ISC"
init.module = "[redacted].npm-init.js"
init.version = "1.0.0"
install-links = false
install-strategy = "hoisted"
json = false
key = null
legacy-bundling = false
legacy-peer-deps = false
libc = null
link = false
local-address = null
location = "user"
lockfile-version = null
loglevel = "notice"
logs-dir = null
logs-max = 10
; long = false ; overridden by cli
maxsockets = 15
message = "%s"
node-gyp = "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js"
node-options = null
noproxy = [""]
npm-version = "11.6.2"
offline = false
omit = []
omit-lockfile-registry-resolved = false
only = null
optional = null
os = null
otp = null
pack-destination = "."
package = []
package-lock = true
package-lock-only = false
parseable = false
prefer-dedupe = false
prefer-offline = false
prefer-online = false
prefix = "/usr/local"
preid = ""
production = null
progress = true
provenance = false
provenance-file = null
proxy = null
read-only = false
rebuild-bundle = true
registry = "https://registry.npmjs.org/"
replace-registry-host = "npmjs"
save = true
save-bundle = false
save-dev = false
save-exact = false
save-optional = false
save-peer = false
save-prefix = "^"
save-prod = false
sbom-format = null
sbom-type = "library"
scope = ""
script-shell = null
searchexclude = ""
searchlimit = 20
searchopts = ""
searchstaleness = 900
shell = "/bin/zsh"
shrinkwrap = true
sign-git-commit = false
sign-git-tag = false
strict-peer-deps = false
; strict-ssl = true ; overridden by user
tag = "latest"
tag-version-prefix = "v"
timing = false
umask = 0
unicode = true
update-notifier = true
usage = false
user-agent = "npm/{npm-version} node/{node-version} {platform} {arch} workspaces/{workspaces} {ci}"
userconfig = "[redacted].npmrc"
version = false
versions = false
viewer = "man"
which = null
workspace = []
workspaces = null
workspaces-update = true
yes = null
; "user" config from [redacted]
strict-ssl = true
; "cli" config from command line options
long = true
npm debug.rtf
Is there an existing issue for this?
This issue exists in the latest npm version
Current Behavior
Running
npm installfails with "Exit handler never called!". This happened after a previousnpm installfailed withENOTEMPTY(rename ofnode_modules/ajv-formats). I removednode_modulesand rannpm installagain; the second run produced this error instead.Expected Behavior
npm installcompletes and installs dependencies.Steps To Reproduce
package-lock.json, runnpm install.node_modulesin a bad state, runrm -rf node_modulesthennpm installagain.Install fails with:
Exit handler never called!Environment
node -vv24.12.0npm -v11.6.2npm debug.rtf