Git Bash执行npm start提示node未识别,但node/npm命令可正常运行
npm start提示'node' is not recognized的问题 这问题我之前帮同事排查过好几次,虽然你单独在Git Bash里能正常跑node -v和npm -v,但npm执行start脚本时的子进程环境变量没正确继承到node的路径,导致报错。给你几个实测有效的解决办法:
方法1:重启Git Bash并以管理员身份运行
有时候更新环境变量后,Git Bash没有重新加载系统的PATH配置,尤其是非管理员身份运行时,可能无法获取完整的环境变量。先关闭所有Git Bash窗口,右键点击Git Bash图标选择以管理员身份运行,再进入项目目录执行npm start试试。
方法2:修改package.json的start脚本,指定node绝对路径
直接在start命令里写明node的安装路径,绕开环境变量的问题。比如你的node安装在C:\Program Files\nodejs\node.exe,修改package.json的scripts部分:
"scripts": { "start": "\"C:\\Program Files\\nodejs\\node.exe\" react-scripts start" }
或者用Git Bash支持的正斜杠路径(注意空格要转义):
"scripts": { "start": "/c/Program\\ Files/nodejs/node.exe react-scripts start" }
修改后保存,再执行npm start即可。
方法3:在Git Bash的.bashrc中手动添加node到PATH
在Git Bash里打开用户目录下的.bashrc文件(如果没有就新建一个),添加一行配置:
export PATH="/c/Program Files/nodejs:$PATH"
注意替换成你实际的node安装路径,保存后执行source ~/.bashrc让配置生效,再运行npm start。这会确保每次打开Git Bash时,node的路径都被加入到环境变量中。
方法4:配置npm使用Git Bash作为脚本执行shell
npm默认可能用Windows的CMD来执行脚本,导致环境不一致。在Git Bash里执行以下命令,把npm的脚本shell设置为Git Bash:
npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"
或者用正斜杠格式:
npm config set script-shell /c/Program\ Files/Git/bin/bash.exe
配置完成后,重新运行npm start应该就能正常执行了。
补充说明
为什么单独运行node没问题,但npm脚本不行?因为npm运行脚本时会创建一个独立的子进程,这个子进程的环境变量可能和你直接在Git Bash终端里的环境不一样——Windows下Git Bash会对系统PATH做类Unix化的转换,但有时候转换不完全,导致npm的子进程找不到node的可执行文件。上面的方法都是从环境变量或执行环境的角度来解决这个问题。
内容的提问来源于stack exchange,提问作者Derek Lee

