如何将VSCode的launch.json调试配置改写为长尾?

2026-04-27 19:001阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计825个文字,预计阅读时间需要4分钟。

如何将VSCode的launch.json调试配置改写为长尾?

VSCode 弹出请创建 launch.json提示,请直接在 .vscode 文件夹下创建一个名为 launch.json 的文件,并填写相关配置。

program 路径写错就直接失败

最常见的就是填了 "program": "src/index.js" 却没设 cwd,VSCode 默认从工作区根目录找,自然找不到。Windows 下还容易误用反斜杠 \,必须统一用正斜杠 /

  • program 必须指向一个真实存在的可执行文件(Node.js 项目是 .js,C++ 是编译后的 .exe 或无后缀可执行文件)
  • 优先用变量:${workspaceFolder}/dist/index.js,别硬写 C:/project/dist/index.js
  • TypeScript 项目必须指向编译后的 .js,不是 .ts;确认 dist/index.jsdist/index.js.map 都存在
  • 运行前先终端里手动执行一遍 node dist/index.js,确保它真能跑通

type 和 request 搞混就挂不上

type 决定用哪个调试器(nodecppdbgpython),request 决定行为模式:launch 是 VSCode 自己拉起进程,attach 是连已运行的进程。两者不能互换。

  • request: "launch" 时,必须有 program 字段;漏掉就报 “No program specified”
  • request: "attach" 时,必须有 port 字段;如果 node 启动用了 node --inspect-brk=9230 app.js,那 port 就得是 9230,不是默认 9229
  • 多个配置共存时,name 别都叫 “Debug”,建议带环境和模式,比如 "Launch (dev)""Attach to API (prod)"
  • 删掉不用的配置项,留太多容易点错,行为完全不可预期

TypeScript 断点打在 .ts 上却不停

这不是 VSCode 的问题,是 sourcemap 没对上。光开 sourceMaps: true 不够,VSCode 还得知道去哪找 .map 文件、以及 .map 里写的 sources 路径是否匹配你当前 workspace 结构。

  • outFiles 必须显式列出输出 JS 文件路径,例如 ["${workspaceFolder}/dist/**/*.js"]
  • TS 编译选项中,关掉 inlineSourceMap,只开 sourceMap;否则 map 内容被塞进 .js 末尾,VSCode 可能读不到
  • 检查 dist/index.js.map 是否真实存在,打开它看 sources 字段值是不是类似 ["../src/index.ts"],且该路径在 workspace 里能对应上
  • 大型单体项目若 sources 是绝对路径(如 "/Users/xxx/project/src/index.ts"),得加 resolveSourceMapLocations 过滤掉 node_modules 等无关路径

最常被忽略的一点:launch.json 里的 version 字段必须是 "0.2.0",少一个点或写成字符串 "2.0" 都会静默失效;而 tasks.json 的 version 是 "2.0.0" —— 它俩版本号不通用,别抄串了。

本文共计825个文字,预计阅读时间需要4分钟。

如何将VSCode的launch.json调试配置改写为长尾?

VSCode 弹出请创建 launch.json提示,请直接在 .vscode 文件夹下创建一个名为 launch.json 的文件,并填写相关配置。

program 路径写错就直接失败

最常见的就是填了 "program": "src/index.js" 却没设 cwd,VSCode 默认从工作区根目录找,自然找不到。Windows 下还容易误用反斜杠 \,必须统一用正斜杠 /

  • program 必须指向一个真实存在的可执行文件(Node.js 项目是 .js,C++ 是编译后的 .exe 或无后缀可执行文件)
  • 优先用变量:${workspaceFolder}/dist/index.js,别硬写 C:/project/dist/index.js
  • TypeScript 项目必须指向编译后的 .js,不是 .ts;确认 dist/index.jsdist/index.js.map 都存在
  • 运行前先终端里手动执行一遍 node dist/index.js,确保它真能跑通

type 和 request 搞混就挂不上

type 决定用哪个调试器(nodecppdbgpython),request 决定行为模式:launch 是 VSCode 自己拉起进程,attach 是连已运行的进程。两者不能互换。

  • request: "launch" 时,必须有 program 字段;漏掉就报 “No program specified”
  • request: "attach" 时,必须有 port 字段;如果 node 启动用了 node --inspect-brk=9230 app.js,那 port 就得是 9230,不是默认 9229
  • 多个配置共存时,name 别都叫 “Debug”,建议带环境和模式,比如 "Launch (dev)""Attach to API (prod)"
  • 删掉不用的配置项,留太多容易点错,行为完全不可预期

TypeScript 断点打在 .ts 上却不停

这不是 VSCode 的问题,是 sourcemap 没对上。光开 sourceMaps: true 不够,VSCode 还得知道去哪找 .map 文件、以及 .map 里写的 sources 路径是否匹配你当前 workspace 结构。

  • outFiles 必须显式列出输出 JS 文件路径,例如 ["${workspaceFolder}/dist/**/*.js"]
  • TS 编译选项中,关掉 inlineSourceMap,只开 sourceMap;否则 map 内容被塞进 .js 末尾,VSCode 可能读不到
  • 检查 dist/index.js.map 是否真实存在,打开它看 sources 字段值是不是类似 ["../src/index.ts"],且该路径在 workspace 里能对应上
  • 大型单体项目若 sources 是绝对路径(如 "/Users/xxx/project/src/index.ts"),得加 resolveSourceMapLocations 过滤掉 node_modules 等无关路径

最常被忽略的一点:launch.json 里的 version 字段必须是 "0.2.0",少一个点或写成字符串 "2.0" 都会静默失效;而 tasks.json 的 version 是 "2.0.0" —— 它俩版本号不通用,别抄串了。