vscode调试失败主因是program路径错误、attach端口不匹配或sourcemaps配置失效;需用${workspacefolder}写绝对路径、确保port一致、显式配置outfiles和sourcemaps:true。

launch.json 里 program 路径写错就直接报错
VSCode 调试启动失败,最常见的原因是 program 字段指向的文件不存在或路径不对。它必须是绝对路径,或者相对于 cwd 的相对路径——但很多人默认填了“src/index.js”却没设 cwd,结果 VSCode 在工作区根目录下找,自然找不到。
-
program推荐写成${workspaceFolder}/dist/index.js这类变量形式,避免硬编码 - 如果用 TypeScript,确保
program指向的是编译后的.js文件,不是.ts - Windows 下路径分隔符用正斜杠
/更稳妥(VSCode 内部统一处理),别用反斜杠\ - 运行前先手动执行一次
node dist/index.js确认能跑通,再进调试
attach 模式下 port 不匹配会导致“连接被拒绝”
想调试已启动的 Node.js 进程(比如用 node --inspect-brk 启动的),attach 配置里的 port 必须和命令行里指定的一致,默认是 9229,但如果你写了 --inspect-brk=9230,那 launch.json 里就得配 "port": 9230。
-
address一般不用改,默认"127.0.0.1";远程调试才可能要调 -
restart设为true可以在进程重启后自动重连,适合配合 nodemon - 用
ps aux | grep node或任务管理器确认目标进程确实在监听对应端口
调试 TypeScript 项目必须加 sourceMaps 和 outFiles
断点打在 .ts 文件上却不停,基本就是 sourcemap 没生效。sourceMaps: true 是前提,但光有它不够——VSCode 还得知道从哪找生成的 map 文件。
-
outFiles必须显式列出编译输出路径,例如["${workspaceFolder}/dist/**/*.js"] -
resolveSourceMapLocations可选,但大型单体项目里如果 map 里存的是绝对路径,可能得用它过滤掉 node_modules - TypeScript 编译选项
sourceMap和inlineSourceMap不能同时为 true;推荐关掉inlineSourceMap,用独立.js.map文件 - 检查
dist/index.js.map是否真实存在,且内容里sources字段指向的是你 workspace 里的.ts路径
多个配置共存时 name 和 request 容易混淆
一个 launch.json 里放了 launch、attach、甚至 compound,结果点错配置,调试行为完全不对。根本问题在于 name 写得太笼统(比如都叫 “Debug”),而 request 类型没看清楚。
-
request: "launch"对应本地启动新进程;request: "attach"是挂载已有进程 -
name建议带环境和模式,比如"Launch (dev)"、"Attach to API (prod)" - 删掉不用的配置项,留太多反而增加误操作概率
- 修改完
launch.json后,务必点右上角调试面板的下拉菜单,确认选中的是你刚改的那个name
真正麻烦的从来不是写几行 JSON,而是路径、端口、sourcemap 这三处细节一旦错位,错误提示又不直接,容易来回折腾半小时才意识到少了个 $ 符号。











