根本原因是环境变量未继承或PATH配置错误;需先在VSCode内置终端执行node -v验证,无输出则须重装Node.js并勾选Add to PATH,macOS/Linux改.zshrc后用code .启动,Windows检查系统环境变量,再配置launch.json的runtimeExecutable或settings.json的terminal.integrated.env.*。

VSCode 里 node -v 报错、F5 调试提示 Cannot find runtime 'node'、右键 Run Code 中文乱码或卡死——根本不是插件没装对,而是环境变量没继承或 PATH 没写对。先验证再配置,否则所有操作都是空转。
VSCode 终端里 node -v 不生效?先看它启动时读没读你的 shell 配置
macOS/Linux 下从 Dock 或 Spotlight 启动 VSCode,进程不加载 ~/.zshrc;Windows 下 Node 安装时漏选 Add to PATH,C:\Program Files\nodejs 就根本不在系统 Path 里。
- 验证方式唯一:在 VSCode 内置终端(
Ctrl + `)里直接执行node -v,无输出就别往下配 - macOS/Linux:改完
~/.zshrc后必须彻底退出所有 VSCode 窗口,再用终端执行code --no-sandbox .启动 - Windows:打开「系统属性 → 高级 → 环境变量」,检查「系统变量」的
Path是否含C:\Program Files\nodejs;路径含空格或斜杠方向错(如C:\Program Files\ nodejs)都会失效 - 最省事方案:卸载重装 LTS 版,安装时**务必勾选
Add to PATH**,且路径避开中文和空格
launch.json 里 Cannot find runtime 'node'?调试器和终端用的是两套 PATH
即使 node -v 在终端能跑,launch.json 仍可能报错——因为 VSCode 调试器不继承终端环境,它只认系统 PATH 或显式注入的 runtimeExecutable。
- 优先检查
which node输出的完整路径(比如/opt/homebrew/bin/node),然后在.vscode/settings.json中注入:
{
"terminal.integrated.env.osx": {
"PATH": "/opt/homebrew/bin:${env:PATH}"
}
}
launch.json 的配置里加 "runtimeExecutable" 字段,值为上面 which node 的结果type: "pwa-node"——老项目或 CI 场景下容易 fallback 失败,统一用 "type": "node"
用 code-runner 运行 JS 却乱码、卡死、不支持 import?默认命令太简陋
code-runner 默认执行 node $fileName,不处理编码、模块类型、stdin 输入流,所以 Windows 中文路径下乱码、ESM 语法报错、含 process.stdin 的脚本假死全是常态。
- Windows 中文乱码:在设置中搜
code-runner.executorMap,把javascript对应值改成:"node -r utf-8 $fileName" - 支持
import/export:确保项目根目录有package.json且含"type": "module",再把 executor 改成:"node --experimental-specifier-resolution=node $fileName" - 含交互输入(如 LeetCode 模拟输入):
code-runner无法转发 stdin,必须进终端手动运行,或改用 F5 调试模式 - 别指望它替代调试器——断点、变量监视、调用栈这些功能它完全不提供
断点打了没反应?program 字段指向错误或源码映射链路断了
常见报错 Cannot launch program because corresponding JavaScript cannot be found,本质是调试器找不到可执行文件,或 TypeScript 编译后路径与 source map 对不上。
-
program必须指向一个真实存在的、能被node直接执行的.js文件,比如"${workspaceFolder}/dist/index.js";不能是.ts、.jsx或未编译源码 - TypeScript 项目:确认
tsconfig.json启用了"sourceMap": true,且outDir和launch.json中的"outFiles"一致 - 如果源码在子目录(如
packages/foo/src),还需在launch.json加"resolveSourceMapLocations"显式放行路径 - 别忽略
npm -v是否成功——调试器底层依赖 npm 启动脚本,npm不可用,npm start类调试也会失败
真正卡住人的从来不是配置项多,而是每一步都依赖上一步的环境干净有效。比如 which node 输出路径没写进 settings.json,或者 package.json 漏了 "type": "module",后面所有调试、运行、热重载都会静默失效。动手前,先在 VSCode 终端里敲一遍 node -v 和 npm -v——这是唯一可信的起点。



















