vscode找不到node的根本原因是环境变量未正确继承:macos/linux因gui启动不加载shell配置文件,windows因node.js安装时未勾选“add to path”;需分别通过终端启动code、重装node或手动配置path解决。

VSCode 本身不带 Node.js 运行时,所有“运行 JS”“调试 JS”的能力都依赖系统已安装且可被正确发现的 node 命令。如果终端里能跑 node -v,但 VSCode 里报 command not found: node,问题一定出在环境变量继承上,不是插件、不是设置、更不是 VSCode 故障。
VSCode 找不到 node:根本是 PATH 没继承
macOS/Linux 下,从 Dock 或 Spotlight 启动 VSCode 不会加载 ~/.zshrc 或 ~/.bash_profile;Windows 下常因 Node.js 安装时没勾选 “Add to PATH” 导致系统级 PATH 缺失。
- macOS/Linux:运行
which node查路径(比如/opt/homebrew/bin/node),确认该路径是否出现在~/.zshrc的export PATH="...:$PATH"中;改完必须重启 VSCode —— 更推荐直接从终端启动:code --no-sandbox . - Windows:打开系统环境变量面板,确认
C:\Program Files\nodejs\已加到“系统变量”或“用户变量”的PATH里;不确定就重装 Node.js,并务必勾选 “Add to PATH” - 验证是否生效:在 VSCode 内置终端(
Ctrl+`)中执行node -v,必须有输出;没有就别往下配launch.json了
用 code-runner 跑 JS 却乱码/卡住/不支持 import
这个插件默认命令太简陋,不处理编码、模块类型和输入流,尤其在 Windows 中文路径或 ESM 项目下极易出问题。
- 乱码(Windows):在 VSCode 设置中搜索
code-runner.executorMap,把javascript对应值改成:"node -r utf-8 $fileName" - ESM 报错
Cannot use import statement outside a module:确保项目根目录package.json有"type": "module",再把 executor 改成:"node --experimental-specifier-resolution=node $fileName" - 遇到
process.stdin就假死:code-runner不支持交互式输入,换用内置终端手动跑,或改用调试模式(F5)
断点不命中,提示 Cannot launch program because corresponding JavaScript cannot be found
这不是代码写错了,而是调试器找不到真实可执行的 JS 文件,或者源映射(source map)没对齐。常见于 TypeScript、打包后项目或 ESM/CJS 混用场景。
- 确保
.vscode/launch.json中program字段指向的是真实可执行的 JS 文件(比如./dist/index.js),不是.ts或.mjs源文件 - 如果用了 TypeScript,必须开启
sourceMaps: true,且编译后的.js.map文件和.js在同一目录 - ESM 项目要加
"type": "module"到package.json,否则调试器会按 CJS 解析,路径解析错乱
最常被忽略的其实是 Shell 初始化逻辑是否完整加载 —— macOS/Linux 用户容易以为 source ~/.zshrc 就够了,其实 VSCode 进程未必继承它;Windows 用户则常把“用户变量 PATH”当“系统变量 PATH”,结果 GUI 启动的程序根本看不见。环境变量这事,差一个路径、少一次重启,就全卡住。











