vscode终端执行node -v报command not found,根本原因是gui启动未加载shell配置文件导致path缺失:macos/linux需设terminal.integrated.profiles中shell的args为["-l"]启用登录shell,windows需确认node路径已加入系统环境变量并彻底重启vscode。

VSCode终端里执行node -v报command not found,不是插件没装、也不是Node没装,而是VSCode进程根本没拿到你shell配置里写的PATH—— macOS/Linux下Dock启动不读~/.zshrc,Windows下安装漏勾“Add to PATH”就等于没装。
为什么系统终端能跑,VSCode终端却找不到node
本质是环境变量加载断层:VSCode GUI进程(Dock/开始菜单启动)不继承shell初始化文件,导致export PATH=...那行压根没生效。
- macOS/Linux:检查
~/.zshrc是否含export PATH="/opt/homebrew/bin:$PATH"(Homebrew路径)或source ~/.nvm/nvm.sh(nvm场景) - Windows:打开「系统属性 → 高级 → 环境变量」,确认
C:\Program Files\nodejs\在“系统变量”的Path里——路径含空格或斜杠方向错(如C:\Program Files\nodejs少了个\)都会失效 - 验证方式唯一且必须:在VSCode内置终端(
Ctrl + `)里直接运行echo $PATH(macOS/Linux)或echo %PATH%(Windows),搜node关键词;没出现就别配launch.json了
terminal.integrated.profiles加-l参数才真正生效
VSCode默认以非登录shell启动终端,跳过~/.zshrc加载。改配置不重启等于白改。
- 在VSCode设置里搜
terminal.integrated.profiles,找到zsh(或bash)项,补上"args": ["-l"]——-l表示login shell,强制加载初始化文件 - 改完必须彻底退出VSCode所有窗口(macOS右键Dock图标→Quit,Windows任务管理器杀掉
Code.exe),再从系统终端执行code --no-sandbox .启动 - nvm用户额外注意:
nvm use v18.19.0这类命令只对当前终端会话生效,VSCode重启后需重新激活,或在~/.zshrc末尾加nvm use --delete-prefix v18.19.0
launch.json里program填错是调试失败主因
报Cannot launch program几乎全是路径问题——调试器只认编译后的.js文件,不认.ts或.mjs源码。
- TypeScript项目:
"program": "${workspaceFolder}/dist/index.js",且tsconfig.json中"sourceMap": true,确保.js.map和.js同目录 - ESM项目(
package.json含"type": "module"):"runtimeArgs": ["--experimental-specifier-resolution=node"]必须加上,否则import语句直接报错 - 别用
"runtimeExecutable": "npm"——它无法注入断点,调试器会静默失败
code-runner乱码/卡死/不支持import怎么修
这个插件默认命令太简陋:node $fileName不处理编码、模块类型、stdin交互,尤其Windows中文路径和ESM项目下必崩。
- 乱码(Windows):在设置里搜
code-runner.executorMap,把javascript值改成"node -r utf-8 $fileName" - ESM报
Cannot use import statement:改executor为"node --experimental-specifier-resolution=node $fileName",并确认package.json有"type": "module" - 遇到
process.stdin就假死:code-runner不支持交互式输入,要么换到内置终端手动跑,要么用F5调试模式代替
最常被忽略的点:改完~/.zshrc或系统PATH后,只关终端标签页没用,必须杀掉整个VSCode进程再重开——旧进程持有的环境变量快照不会自动刷新。











