断点不触发需检查launch.json中type与调试扩展匹配、request类型正确、source map配置完整;“Cannot connect”需确认--inspect参数、端口、地址一致;源码映射需sourceMaps开启且outFiles路径精准;控制台问题应设console为integratedTerminal并确保UTF-8编码。

断点不触发:检查 launch.json 的 type 和 request 是否匹配运行时
VSCode 断点不生效,最常见的原因是 launch.json 中的调试器类型与实际执行环境不一致。比如用 Node.js 写的脚本,却配了 "type": "python";或者想调试 TypeScript 源码,但没启用 source map 支持。
必须确保:
-
type值与已安装的调试扩展一致(如"node"对应 Node.js Debug 扩展,"pwa-node"对应 Debugger for Edge/Chrome) -
request是"launch"(启动新进程)还是"attach"(附加到已有进程),不能混淆 - 使用
"pwa-node"时,resolveSourceMapLocations需显式配置才能正确映射 .ts → .js
{
"version": "0.2.0",
"configurations": [
{
"type": "pwa-node",
"request": "launch",
"name": "Launch TS",
"skipFiles": ["/**"],
"program": "${workspaceFolder}/src/index.ts",
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"resolveSourceMapLocations": ["${workspaceFolder}/src/**", "!${workspaceFolder}/node_modules/**"]
}
]
}
“Cannot connect to runtime” 错误:确认 port、address 和进程状态
当 request: "attach" 时出现该错误,本质是 VSCode 尝试连接一个并不存在或未监听的调试端口。
常见原因包括:
- Node 进程未以
--inspect或--inspect-brk启动(例如:node --inspect-brk index.js) -
port配置与启动参数不一致(默认是9229,若启动时指定--inspect=0.0.0.0:9230,则launch.json中必须设"port": 9230) -
address设为"localhost"但进程监听在"0.0.0.0",或反之(Docker 容器内调试时尤其关键) - 防火墙或 WSL2 网络隔离导致端口不可达(可临时用
telnet localhost 9229测试连通性)
调试器识别不到源码:sourceMaps 和 outFiles 必须双向对齐
TypeScript、Babel、Webpack 项目中,断点打在 .ts/.jsx 文件却跳转失败,不是配置漏了,而是路径映射断裂。
关键点:
-
sourceMaps必须为true(TypeScript 编译选项compilerOptions.sourceMap也得开) -
outFiles要精确匹配生成的 JS 文件路径(支持 glob,但不能写成"./dist/**/*.js"却实际输出到./build/) - Webpack 用户注意:
devtool: "source-map"或"inline-source-map"才生成独立 .map 文件;"eval-source-map"不被 VSCode 调试器识别 - 如果用
tsc --watch,确保修改后 .js 和 .map 同时更新,否则旧 map 会指向错误行号
调试控制台输出乱码或无响应:检查 console 和 internalConsoleOptions
调试过程中 console.log 不显示、或中文变问号、或输入卡死,通常不是代码问题,而是终端模拟行为差异。
解决方向:
- 在
launch.json中添加"console": "integratedTerminal"(推荐)或"externalTerminal",避免使用默认的 debug console(它不支持 stdin / 交互式输入) - Windows 用户若遇中文乱码,需确认系统区域设置为 UTF-8(
intl.cpl → 更改系统区域设置 → 勾选 Beta: Use Unicode UTF-8),否则即使加了"env": { "NODE_OPTIONS": "--no-warnings" }也无效 -
internalConsoleOptions设为"neverOpen"可强制禁用 debug console,防止它劫持输出
outFiles glob 是否真能匹配到文件,以及 --inspect 参数是否真的被进程接收。建议用 ps aux | grep inspect(macOS/Linux)或任务管理器(Windows)确认进程参数。










