根本原因是Git Bash启动时重置PATH,不继承Windows环境变量中的Node.js路径;需在~/.bashrc中手动添加Node.js及npm全局bin路径,并确保VSCode终端以login shell方式启动。

VSCode 里 Git Bash 能跑 git,但执行 node、npm 报“不是内部或外部命令”,根本原因不是 VSCode 配置错了,而是 Git Bash 没加载你系统里装的 Node.js —— 它默认只认自己带的工具链,不自动继承 Windows 的 PATH。
Git Bash 启动时不加载 Node.js 的真实原因
Git Bash 是 MSYS2 衍生环境,启动时会重置 PATH,只保留自身 /usr/bin、/bin 等路径,而 Windows 下 Node.js 通常装在 C:\Program Files\nodejs\ 或用户目录下,不在它的搜索范围内。
-
--login参数会让它读~/.bashrc,但默认这个文件是空的,没做任何PATH补充 - 即使你在 Windows 环境变量里加了 Node.js 路径,Git Bash 也不会自动导入(除非显式用
export PATH) - VSCode 启动终端时,若未指定
env继承策略,子进程默认不透传 Windows 的完整PATH
让 node 和 npm 在 Git Bash 中可用的实操步骤
核心是在 ~/.bashrc 里手动追加 Node.js 路径,并确保 VSCode 启动时加载它。不需要改 VSCode 设置里的 shell 路径,也不用动全局环境变量。
- 先确认 Node.js 安装路径:在 Windows 命令行里运行
where node,常见输出是C:\Program Files\nodejs\node.exe,对应目录就是C:\Program Files\nodejs\ - 打开 Git Bash(非 VSCode 内),执行
echo $HOME查到家目录,比如/c/Users/xxx,然后用 VSCode 或记事本编辑$HOME/.bashrc - 在
.bashrc文件末尾添加这行:export PATH="/c/Program Files/nodejs:$PATH"(注意路径用正斜杠、空格要转义或引号包裹;如果路径含空格,更稳妥写法是export PATH="/c/Program Files/nodejs":$PATH) - 保存后,在 Git Bash 里执行
source ~/.bashrc,再试node -v和npm -v,能输出版本号才算生效
VSCode 终端必须 reload 才能生效?不一定
VSCode 的集成终端是否加载新 .bashrc,取决于你用的是哪种配置方式:
- 如果用了
"terminal.integrated.profiles.windows"+"--login -i"(推荐),那每次新开终端都会走 login shell 流程,自动读.bashrc,不用重启 VSCode - 如果还用老式
"terminal.integrated.shell.windows"配置(已弃用),它不带--login,就不会加载.bashrc,node永远找不到 - 检查当前终端是否为 login shell:执行
shopt login_shell,输出login_shell on才对
为什么有时 npm 能用但 npx 不行?
Node.js 安装包自带 npx,但它和 npm 一样,依赖 PATH 正确指向 node_modules/.bin。Git Bash 默认不处理 npm 全局 bin 目录(比如 %APPDATA%\npm),所以即使 npm 可用,npx 仍可能报错。
- 查 npm 全局 bin 路径:在 Windows PowerShell 里运行
npm config get prefix,结果类似C:\Users\xxx\AppData\Roaming\npm,其下的node_modules\.bin就是npx所在位置 - 在
~/.bashrc中追加第二行:export PATH="/c/Users/xxx/AppData/Roaming/npm/node_modules/.bin:$PATH"(把xxx换成你实际用户名) - 别漏掉
source ~/.bashrc,再验证npx -v
最易被忽略的一点:Git Bash 对路径大小写敏感,但 Windows 文件系统不敏感;而 MSYS2 的路径映射规则要求盘符必须小写(/c/ 而非 /C/),写错会导致 PATH 添加失败,node 还是找不到。


















