如何将VSCode的launch.json调试配置改写为长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计825个文字,预计阅读时间需要4分钟。
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.js和dist/index.js.map都存在 - 运行前先终端里手动执行一遍
node dist/index.js,确保它真能跑通
type 和 request 搞混就挂不上
type 决定用哪个调试器(node、cppdbg、python),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 的文件,并填写相关配置。
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.js和dist/index.js.map都存在 - 运行前先终端里手动执行一遍
node dist/index.js,确保它真能跑通
type 和 request 搞混就挂不上
type 决定用哪个调试器(node、cppdbg、python),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" —— 它俩版本号不通用,别抄串了。

