npm ERR! cb() never called! 看起来像 npm 内部崩溃,但真正的根因通常是 npm 版本与当前 Node.js 版本不兼容。
最常见根因:版本不匹配
错误表现:
ERROR: npm v11.17.0 is known not to run on Node.js v14.21.3.
This version of npm supports the following node versions: `^20.17.0 || >=22.9.0`.
SyntaxError: Unexpected token '&&='
at wrapSafe (internal/modules/cjs/loader.js:1029:16)
npm 11 内部使用了 &&= 逻辑赋值运算符,这是 ES2021 特性,Node.js 14 不支持,导致 npm 自身启动时语法解析失败。
解决方案:切换 Node.js 版本
# 查看当前版本
node -v
npm -v
# 用 nvm 切换到兼容版本
nvm install 22
nvm use 22
# 验证
node -v # v22.x.x
npm -v # 10.x.x 或更高
通用修复流程
如果版本兼容但仍然报错:
1. 升级 npm
npm install -g npm@latest
2. 清理缓存重装
npm cache clean --force
rm -rf node_modules
rm package-lock.json
npm install
macOS 还可以删除整个 npm 缓存目录:
rm -rf ~/.npm
3. 切换国内镜像
国内网络拉包失败时:
npm config set registry https://registry.npmmirror.com
npm install
4. 老项目依赖冲突
npm install --legacy-peer-deps
npm 与 Node.js 版本对照
| npm 版本 | 最低 Node.js 要求 |
|---|---|
| npm 11 | Node.js 20.17 / 22.9+ |
| npm 10 | Node.js 18+ |
| npm 9 | Node.js 14.17+ |
| npm 8 | Node.js 12+ |
用 nvm 安装 LTS 版本可以拿到对应版本的 npm:
nvm install --lts
nvm use --lts