You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows下Git Bash中NPM run脚本无法调用node命令求助

解决Git Bash中NPM脚本无法识别node命令的问题

我之前在Windows的Git Bash环境里也碰到过一模一样的问题,折腾了好一阵才找到原因。本质上是NPM执行脚本的上下文和你直接在Bash里敲命令的环境不一样,下面是具体的分析和可行的解决办法:

问题到底出在哪?

NPM默认会用Windows的CMD来执行脚本,哪怕你是在Git Bash里运行npm run。这就导致两个关键问题:

  • 你在.bashrc或者Bash会话里配置的node路径,在NPM的执行环境里根本读不到
  • 你写的Unix风格路径(比如/c/Program Files/nodejs/node.exe),CMD完全不认这种格式,所以直接复制到Bash能用,但NPM执行就报错

几个靠谱的解决方案

1. 给NPM脚本换用Windows格式的绝对路径

把Unix路径转成Windows原生的格式,注意引号的正确写法:

"nodetest": "\"C:\\Program Files\\nodejs\\node.exe\" nodetest.js"

或者用系统变量简化写法,避免手动写死路径:

"nodetest": "\"%ProgramFiles%\\nodejs\\node.exe\" nodetest.js"

2. 让NPM用Git Bash来执行脚本

直接修改NPM的配置,指定它用Git Bash作为脚本执行的shell,这样就能继承Bash里的所有环境变量了:

npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"

设置完之后,再跑npm run nodetest,应该就能直接识别node命令,不用写绝对路径了。

3. 确保Node路径在系统级PATH里

有时候问题出在环境变量的层级上——你可能只在用户级或者Bash里加了Node路径,但系统级PATH里没有。这时候NPM用CMD执行时就找不到node

  • 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
  • 在「系统变量」的Path列表里,添加C:\Program Files\nodejs
  • 重启所有终端(包括ConEmu和Git Bash),再测试npm run nodetest

怎么验证问题?

可以先在package.json里加个测试脚本,看看NPM执行环境里的PATH是什么样的:

"check-path": "echo %PATH%"

运行npm run check-path,如果输出里看不到C:\Program Files\nodejs,那就说明环境变量没生效,直接用上面的方案2或者3就能解决。

内容的提问来源于stack exchange,提问作者Denno

火山引擎 最新活动