VSCode终端报“command not found”是因未继承系统PATH:macOS/Linux需设terminal.integrated.shellArgs为["-l"]启用login shell,Windows需在settings.json中通过terminal.integrated.env.windows追加Node和npm路径并彻底重启VSCode。

VSCode终端里node、npm或全局命令报“command not found”,不是Node没装,而是终端根本没拿到你的PATH——它启动时跳过了shell初始化文件,PATH还是空的。
为什么系统终端能跑,VSCode终端却找不到命令
VSCode默认启动的是 non-login shell(比如zsh不带-l参数),直接忽略~/.zshrc或~/.bash_profile里的export PATH=...。nvm、Homebrew、npm install -g装的命令全依赖这些配置生效,一跳过就全失效。
- macOS/Linux:运行
which node在iTerm里有输出,在VSCode终端里为空 → 确认是shellArgs没设["-l"] - Windows:CMD里
where node能返回路径,PowerShell里Get-Command node报错 → PowerShell没继承%PATH%,和CMD环境变量不共享 - nvm用户特别注意:
nvm use 20只影响当前终端会话,VSCode新开终端不会自动执行,除非~/.zshrc里有nvm use --delete-prefix v20.10.0这类默认设置
macOS/Linux必须启用 login shell
VSCode设置里不改terminal.integrated.shellArgs.osx或.linux,~/.zshrc永远不加载。
- 打开设置(Cmd + ,),搜索
terminal.integrated.shellArgs - 找到对应系统项,把值设为
["-l"](小写L,不是数字1) - 关闭所有已打开的集成终端(不只是关标签页,要杀掉进程)
- 按
Ctrl + `新建终端,立刻运行echo $PATH,确认含/opt/homebrew/bin、~/.nvm/versions/node/等关键路径 - 如果仍无效,检查
~/.zshrc开头有没有[[ -n $ZSH_EVAL_CONTEXT ]] && return这类提前退出逻辑
Windows手动注入PATH最稳
PowerShell默认不读系统环境变量,靠terminal.integrated.env.windows硬补是最可靠方式。
- 打开Settings (JSON)(Ctrl + Shift + P →
Preferences: Open Settings (JSON)) - 添加这段(路径替换成你真实的Node安装路径):
{ "terminal.integrated.env.windows": { "PATH": "${env:PATH};C:\Program Files\nodejs;C:\Users\YourName\AppData\Roaming\npm" } } - 必须彻底退出VSCode(任务管理器确认
Code.exe无残留),再重开 - 别信“重启终端”就够了——新环境变量只在VSCode启动时读取一次
- 若用nvm-windows,路径通常是
D:\nvm\nodejs,不是C:\Program Files\nodejs
调试器报“Cannot find runtime 'node'”别指望PATH
VSCode调试器进程(vscode-js-debug)完全不读终端的PATH,也不继承shell环境,只认launch.json里硬写的路径或系统变量快照。
- 打开
.vscode/launch.json,在配置块里加这一行:"runtimeExecutable": "C:\Program Files\nodejs\node.exe"
- macOS/Linux用绝对路径:
/usr/local/bin/node或/Users/you/.nvm/versions/node/v20.10.0/bin/node - 不要用
${env:PATH}或which node动态查——调试器不支持运行时解析 - 确保项目是通过
File → Open Folder打开整个文件夹,否则${workspaceFolder}可能指向错误目录
最常被忽略的一点:改完任何环境变量或shell配置,都必须完全退出VSCode再重开——它不会热更新父进程环境。哪怕只差这一步,前面所有配置都白做。











