能跑 node -v 且 vscode 按 f5 能停断点才算配好;终端 node -v 报错时,所有调试配置均无效,须先修复 node 环境路径,再配置 launch.json 的 program 字段指向正确 js 入口,并确保 source map 和工作目录准确。

能跑 node -v 且 VSCode 里按 F5 能停断点,才算配好;其余插件、格式化、TypeScript 支持全是后续优化项,不是启动门槛。
终端里 node -v 报错,别配 launch.json
VSCode 调试器不自带 Node,它只是调用系统已安装的 node 可执行文件。如果终端里 node -v 都失败,所有调试配置都是空转。
- Windows:重装 Node.js,务必勾选 Add to PATH;若已装错,手动把
C:\Program Files\nodejs加进「系统变量 > Path」,然后彻底退出 VSCode 再重开 - macOS/Linux:运行
which node看路径(如/opt/homebrew/bin/node),确认该路径已写入~/.zshrc或~/.bash_profile的export PATH行,改完后执行source ~/.zshrc,再从该终端运行code . - 验证方式:打开 VSCode 内置终端(
Ctrl + `),直接输node -v和npm -v—— 必须有输出,否则停在这里,别往下走
launch.json 里 program 字段总写错
这个字段是调试器唯一认的入口,写错路径、混用源码/编译产物、忽略工作目录,断点就永远灰掉。
- 单文件测试可用
"program": "${file}";但真实后端项目必须写成"program": "${workspaceFolder}/src/server.js"(绝对路径引用) - TypeScript 项目:
program必须指向.js文件(如dist/server.js),不能是src/server.ts;同时tsconfig.json中需含"sourceMap": true,且生成的.js.map和.js在同一目录 - ESM 项目:
package.json必须有"type": "module",否则import解析失败,报Cannot find module - 加
"cwd": "${workspaceFolder}"显式声明工作目录,避免require('./config')因路径解析错而加载失败
用 nodemon 或 npm start 就断点失效?换模式
nodemon、ts-node、babel-node 这类工具会接管进程生命周期,VSCode 默认的 launch 模式无法稳定附加,强行配 runtimeExecutable 容易跳过断点或断连。
- 想热重载调试:终端先执行
nodemon --inspect-brk src/server.js,再在launch.json新增一个"request": "attach"配置,指定"port": 9229(默认)连过去 - 想调试
npm start:把"program"改成"npm","args"设为["start"],并加"console": "integratedTerminal",否则看不到日志输出 - 用
ts-node:推荐"type": "pwa-node",配"runtimeExecutable": "npx"和"runtimeArgs": ["ts-node", "src/index.ts"]
断点变空心、hover 看不到变量,先查 --inspect 和 source map
断点没生效,大概率不是代码问题,而是调试器根本没定位到原始源码位置。
- Node 版本必须 ≥ 14 —— 旧版不支持现代
--inspect协议,VSCode 1.70+ 的调试器会静默降级失败 - TypeScript:确认
tsconfig.json同时开启"sourceMap": true和"inlineSources": true,编译后.js.map文件不能缺失或路径错位 - Webpack/Babel 用户:
devtool设为"source-map"或"inline-source-map",禁用"eval"类型,否则调试器无法映射原始行号 - 别信自动识别:即使
package.json有"type": "module",也要检查node_modules里依赖是否也兼容 ESM,否则import仍可能被错误解析
最常被跳过的其实是环境变量继承和 program 路径的绝对性——这两处一错,后面所有配置都白搭。调试器不会报错,只会安静地跳过断点。











