Git Bash执行package.json脚本时无法识别环境路径求助
解决Git Bash中yarn脚本无法识别node/yarn的问题
你碰到的这个问题其实挺常见的——单独在Git Bash里跑node、yarn都没问题,但通过yarn的package.json脚本调用时就找不到命令,核心原因是yarn默认用Windows的cmd执行脚本,而cmd的环境变量上下文和Git Bash不完全一致,导致脚本里识别不到这些可执行文件。下面给你几个实用的解决方案:
方案1:修改yarn的脚本执行shell为Git Bash
这是最推荐的方法,直接让yarn用Git Bash来执行脚本,就能继承Git Bash的完整环境变量。在Git Bash里运行这条命令:
yarn config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"
注意把路径换成你实际的Git安装路径(比如装在D盘就改对应盘符)。设置完成后再跑yarn start,应该就能正常识别node了。
方案2:用npx帮你定位node
npx会自动查找系统里的node可执行文件,不用依赖环境变量的上下文。把package.json里的start脚本改成:
"start": "npx node scripts/start.js"
这个方法简单粗暴,不用改任何配置,换环境也能正常用。
方案3:给Git Bash手动补充环境变量
虽然你说没创建过.profile,但Git Bash启动时会读取~/.bashrc文件(如果存在)。你可以手动创建这个文件并添加node和yarn的路径:
- 在Git Bash里输入
touch ~/.bashrc创建文件 - 用VS Code打开它:
code ~/.bashrc - 添加以下内容(替换成你自己的安装路径):
export PATH="$PATH:/c/Program Files/nodejs" export PATH="$PATH:/c/Users/你的用户名/AppData/Roaming/npm"
- 保存后,在Git Bash里运行
source ~/.bashrc让配置生效,再试yarn start
方案4:在脚本里写node的绝对路径
如果上面的方法都不行,可以直接在脚本里指定node的完整路径,比如:
"start": "\"C:\\Program Files\\nodejs\\node.exe\" scripts/start.js"
这个方法能快速解决当前问题,但缺点是换电脑或者换node安装路径后需要修改,灵活性差一点。
我之前处理过好几个类似的案例,方案1和方案2基本都能搞定。你可以先试试方案1,不行再换方案2,应该就能解决你的问题了。
内容的提问来源于stack exchange,提问作者MINJA KIM




