Node.js v12.13.1执行npm -v报primordials未定义错误求助
问题现象
在Windows终端执行npm -v查看版本时触发报错,报错信息如下:
C:\Users\ASUS ZenBook I5>npm -v evalmachine.<anonymous>:27 const { Math, Object } = primordials; ^ ReferenceError: primordials is not defined at evalmachine.<anonymous>:27:26 at Object.<anonymous> (C:\Users\ASUS ZenBook I5\AppData\Roaming\npm\node_modules\npm\node_modules\graceful-fs\fs.js:11:8) at Module._compile (internal/modules/cjs/loader.js:959:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10) at Module.load (internal/modules/cjs/loader.js:815:32) at Function.Module._load (internal/modules/cjs/loader.js:727:14) at Module.require (internal/modules/cjs/loader.js:852:19) at require (internal/modules/cjs/helpers.js:74:18) at Object.<anonymous> (C:\Users\ASUS ZenBook I5\AppData\Roaming\npm\node_modules\npm\node_modules\graceful-fs\graceful-fs.js:3:27) at Module._compile (internal/modules/cjs/loader.js:959:30)
当前本地安装的Node.js版本为v12.13.1。
报错根因
该报错是典型的Node.js与npm依赖版本不兼容问题:
- Node.js v12.x版本移除了内部暴露的
primordials全局变量 - 当前全局目录下的npm是历史安装残留的旧版本,其依赖的
graceful-fs@3.x及更早版本会主动调用已被移除的primordials对象,直接触发引用错误
从报错堆栈可以定位到冲突文件来自全局npm的依赖目录,属于旧npm残留导致的问题,和Node.js核心运行逻辑无关。
解决步骤
按以下顺序操作即可修复:
- 关闭所有已打开的终端窗口,打开文件资源管理器进入路径
C:\Users\ASUS ZenBook I5\AppData\Roaming\,找到npm和npm-cache两个文件夹彻底删除,清除旧版本npm的所有残留文件。 - 打开系统「控制面板」-「程序和功能」,在已安装程序列表中找到Node.js v12.13.1,右键选择「更改」,在弹出的安装向导中选择
Repair(修复)选项,等待安装程序完成修复流程。修复流程会自动部署与Node.js v12.13.1完全匹配的npm 6.12.1版本,该版本内置的graceful-fs为兼容Node 12的更新版本,不会再调用被移除的primordials变量。 - 修复完成后重新打开终端,执行
npm -v命令,若正常输出版本号(预期为6.12.1)则说明问题已解决。
如果你不需要固定使用Node.js v12.13.1,也可以直接安装Node.js 16/18长期支持版,安装时选择覆盖旧版本,安装完成后会自动部署匹配版本的npm,同样可以解决该报错。
内容的提问来源于stack exchange,提问作者Whipple's
相关产品推荐
相关产品推荐

