vscode里node命令报“command not found”根本原因是未继承shell的path:macos/linux需用code --no-sandbox启动或设terminal.integrated.shellargs为["-l"],windows应检查系统环境变量path是否含c:\program files\nodejs\并确保路径无空格或中文,验证须在vscode终端执行echo $path或echo %path%确认node路径存在。

VSCode里node命令报“command not found”怎么办
根本不是插件没装对,而是 VSCode 根本没继承你 shell 里的 PATH。你在终端敲 node -v 能出版本号,但在 VSCode 内置终端里报错,大概率是启动方式导致环境变量没加载。
- macOS/Linux:别从 Dock 图标启动 VSCode,改用终端执行
code --no-sandbox或code . - Windows:检查系统环境变量
Path是否包含C:\Program Files\nodejs\,路径含空格或中文(如C:Program Files odejs)会直接失效 - 验证方法:在 VSCode 内置终端里运行
echo $PATH(macOS/Linux)或echo %PATH%(Windows),确认输出里有 Node 安装路径
launch.json 的 program 字段总填错
这个字段只认真实存在的 JS 文件路径,不解析相对语法、不支持 .ts 源码、也不接受命令行指令。
- 纯 JS 项目:写成
"${workspaceFolder}/index.js",确保该文件物理存在 - TypeScript 项目:必须指向编译后输出(如
"${workspaceFolder}/dist/index.js"),不能填src/index.ts - ESM 项目(
"type": "module"):仍填 JS 路径,但要加"runtimeArgs": ["--experimental-specifier-resolution=node"] - 临时调试当前文件:可用
"${file}",但注意不是${fileBasename}
断点显示空心红圈,点下去没反应
空心圈 = VSCode 认为这行代码没对应到可执行 JS,常见于 source map 没对上或配置漏项。
- 必须显式声明:
"type": "node"和"request": "launch" - TypeScript 项目三要素缺一不可:
"sourceMaps": true、"outFiles": ["${workspaceFolder}/dist/**/*.js"](路径必须和实际构建输出一致)、"resolveSourceMapLocations": ["${workspaceFolder}/**"] - ESM 项目还要加
"env": {"NODE_OPTIONS": "--enable-source-maps"},否则断点映射失效
code-runner 插件跑 JS 输出乱码或卡死
它默认用 node $fileName 执行,不处理编码、不支持交互、也不适配 ESM。
- 防乱码(Windows):在设置里搜
code-runner.executorMap,把javascript对应值改成"node -r utf-8 $fileName" - 适配 ESM:改成
"node --experimental-specifier-resolution=node $fileName" - 别用它跑
process.stdin类脚本——它不提供输入流,换调试器或手动进终端跑
PATH,以及 launch.json 里路径是否指向一个真实、可执行、且 source map 可定位的 JS 文件。其他都是表象。











