VSCode终端执行node -v报command not found,根本原因是其启动时未加载shell配置文件(如~/.zshrc),导致PATH缺失;需通过设置terminal.integrated.shellArgs为["-l"]并彻底重启VSCode解决。

VSCode 里执行 node -v 报 command not found,不是 Node 没装好,而是终端根本没读到 PATH。
终端启动时没继承 shell 的 PATH
VSCode 内置终端只在启动瞬间读取一次环境变量,改了系统 PATH 不重启 VSCode 就无效。更隐蔽的是:macOS/Linux 下,VSCode 默认不加载 ~/.zshrc 或 ~/.bash_profile,哪怕你在终端里 echo $PATH 能看到 node 路径,VSCode 终端里也可能没有。
- macOS/Linux:在 VSCode 中按
Cmd+Shift+P→ 输入Developer: Reload Window,或直接从终端执行code .启动 VSCode(这样它会继承当前 shell 环境) - Windows:PowerShell 和 CMD 的环境变量不共享;确认你是在 PowerShell 里配的 PATH,还是只改了系统属性里的“环境变量”——后者对 PowerShell 有效,但如果你用的是 CMD 终端,得单独在 CMD 里运行
setx PATH "%PATH%;C: odejs" - 验证方式:在 VSCode 终端里运行
echo $PATH(Linux/macOS)或echo %PATH%(Windows),搜索输出中是否含nodejs目录
launch.json 里 runtimeExecutable 没配,和终端 PATH 无关
调试器(F5)报 Cannot find runtime 'node',和终端能跑 node -v 是两码事。VSCode 调试器默认不查系统 PATH,只认 launch.json 里写的 runtimeExecutable,或者 fallback 到全局 PATH —— 但这个 fallback 很不可靠,尤其用了 nvm/fnm/volta 的时候。
- 最稳做法:在项目根目录建
.vscode/launch.json,明确写死路径,例如:"runtimeExecutable": "/Users/you/.nvm/versions/node/v20.18.0/bin/node"(macOS/Linux)"runtimeExecutable": "C:\nodejs\node.exe"(Windows,注意双反斜杠或正斜杠) - 别依赖
${env:PATH}或空着这行 —— 它不保证生效,尤其跨平台或版本管理工具场景下 - nvm 用户切记:
nvm use只影响当前终端会话,VSCode 调试器启动新进程时不会自动执行它
npm 全局模块装得到处都是,PATH 却指向旧位置
npm install -g nodemon 成功,但终端里敲 nodemon 仍报 command not found,大概率是 npm config get prefix 返回的路径没加进系统 PATH,或者加错了位置(比如只加了用户变量,没加系统变量)。
- 先查真实安装位置:
npm config get prefix,确认返回的是类似D: odejs ode_global这样的自定义路径,不是%APPDATA% pm - Windows:去「系统属性 → 高级 → 环境变量」,在「用户变量」或「系统变量」的
Path里添加该路径(不要用%APPDATA%变量,直接写绝对路径) - macOS/Linux:在
~/.zshrc末尾加一行export PATH="/usr/local/share/npm/bin:$PATH"(把prefix对应的bin目录放进去) - 改完必须重启 VSCode 整个窗口,仅重载窗口不够
真正卡住人的地方,往往不是“怎么配”,而是“配完没生效却不自知”——比如 npm config set prefix 改了,但忘了同步更新系统 PATH;又或者 launch.json 里写了 runtimeExecutable,却用的是旧版本 node 路径。每次改完,都该用对应上下文验证:终端里跑 which node,调试时看 launch.json 是否被加载,全局命令用 where nodemon(Windows)或 which nodemon(macOS/Linux)确认来源。


















