根本原因是node.js未正确安装或vscode未继承环境变量;必须实测node -v在系统终端和vscode内置终端均成功,再确认launch.json中program指向真实js文件且esm项目已设"type":"module"。

node 命令在 VSCode 里跑不起来,不是插件没装对,也不是 launch.json 写错了——根本原因是系统没装 node,或者 VSCode 根本找不到它。所有“运行”“调试”行为都依赖外部 node,编辑器本身不带运行时。
验证 node 是否真可用
别信安装界面勾了“Add to PATH”就万事大吉,必须实测:
- 关掉所有 VSCode 窗口,包括 Dock/任务栏残留进程
- 打开系统终端(不是 VSCode 内置终端),执行
node -v和npm -v;失败就重装 Node.js LTS 版,Windows 安装时务必勾选 Add to PATH - 再打开 VSCode,按
Ctrl + `调出内置终端,立刻执行node -v;没输出?说明 VSCode 没继承环境变量,别往下配了 - macOS/Linux 用户用
nvm的,确认source ~/.zshrc已写入且新终端已加载;更稳妥的是在终端里执行code .启动项目
launch.json 里 program 指向什么才有效
VSCode 调试器只认真实存在的、能被 node 直接执行的 JS 文件,不是源码路径,也不是打包前的文件:
- 单文件调试:用
"program": "${file}",但确保当前打开的就是可执行脚本(比如index.js) - 入口明确的项目:写死路径,如
"program": "${workspaceFolder}/src/index.js",别用相对路径"./src/index.js"(VSCode 不解析.) - TypeScript 项目:
program必须指向编译后的.js文件(如dist/index.js),且tsconfig.json中开启"sourceMaps": true - ESM 项目:
package.json必须有"type": "module",否则调试器按 CommonJS 解析,import报错、路径错乱
别让 code-runner 插件误导你
它默认命令是 node $fileName,极简但极不可靠,尤其在中文路径、ESM、交互式输入场景下会直接失效:
- Windows 中文乱码:在 VSCode 设置中搜
code-runner.executorMap,把javascript对应值改成:"node -r utf-8 $fileName" - ESM 报
Cannot use import statement outside a module:先加"type": "module"到package.json,再改 executor 为:"node --experimental-specifier-resolution=node $fileName" - 含
process.stdin的脚本(如 LeetCode 模拟输入)必然假死——code-runner不支持 stdin 流,必须进终端手动运行或走 F5 调试 - 它不读
package.json、不处理 source map、不转发环境变量,纯属“一键执行快感”,不适合真实开发流程
断点不命中?先看控制台第一行错误
常见报错 Cannot launch program because corresponding JavaScript cannot be found 或 Can't find runtime executable,和代码逻辑无关,全是配置链断裂:
- 错误类型是
Cannot find module 'xxx':说明node找不到依赖,检查node_modules是否存在、npm install是否成功 - 断点灰色不可用:大概率
program指向了.ts或.jsx源文件,或编译后.js和.js.map不在同一目录 - 调试启动后秒退:
launch.json里误加了runtimeExecutable字段,除非你明确要用nvm锁定版本(如"runtimeExecutable": "~/.nvm/versions/node/v18.18.2/bin/node"),否则删掉 - 用了
nodemon?VSCode 调试器不支持热重载,要 attach:命令行先跑nodemon --inspect-brk index.js,再在launch.json配"type": "node", "request": "attach", "port": 9229
node 命令能不能在 VSCode 终端里敲出来、program 路径是不是指向一个实际存在的 JS 文件、以及 ESM 项目有没有那行 "type": "module"。这三件事没确认清楚,其他配置都是空中楼阁。











