npm脚本执行的Node版本与命令行直接运行版本不一致问题咨询
版本不一致的核心原因
- npm执行脚本时会自动修改当前会话的
PATH变量,优先级顺序为「项目本地node_modules/.bin目录 > npm程序自身所在的Node安装目录 > 系统环境变量配置的PATH路径」。如果你的全局npm程序是绑定在v10版本的Node目录下,执行npm run时会优先调用同目录下的v10版本node.exe,不会使用环境变量中优先级更低的v14版本Node。 - 项目本地安装了
nodenpm包:npm官方源存在名为node的包,用于分发Node.js二进制文件,如果项目依赖中安装了对应v10版本的该包,npm执行脚本时会优先调用本地的这个Node版本。 - 版本管理工具适配问题:如果你使用了nvm-windows、nvs等Node版本管理工具,这类工具对git bash的适配可能存在缺陷,会出现当前shell激活的是v14版本,但全局npm绑定的仍然是旧版v10的情况,导致调用路径不一致。
- 项目根目录下存在
.nvmrc、.node-version等版本配置文件,npm或版本管理工具会自动读取该文件切换到配置的v10版本执行脚本。
排查修复方案
- 在git bash中执行
which npm查看npm的安装路径,如果路径包含v10.23.0相关的目录,说明全局npm绑定的是旧版Node,重新安装v14版本对应的npm即可修复。 - 执行
npm ls node检查项目是否本地安装了node包,若存在执行npm uninstall node卸载本地的Node包即可。 - 执行
npm config get node-version检查npm是否固定了Node运行版本,若有输出执行npm config delete node-version清除配置即可。 - 检查项目根目录下的
.nvmrc、.node-version文件,确认是否配置了v10版本,根据需要修改或删除该文件即可。
内容的提问来源于stack exchange,提问作者Lee Goddard
相关产品推荐
相关产品推荐

