断点调试必须确保VS Code与Chrome通信链路打通:type必须为pwa-chrome(旧chrome类型在VS Code 1.80+已失效),url须与浏览器地址栏完全一致(含协议、端口、路径、哈希),webRoot须精准指向源码根目录,且Chrome需通过命令行带--remote-debugging-port和--user-data-dir启动。

断点调试能配合浏览器,但前提是 VS Code 和 Chrome 的通信链路必须打通——不是装了插件就能用,而是 type、url、webRoot 三者全对齐,缺一不可。
launch.json 的 type 必须是 pwa-chrome
旧配置里写 "type": "chrome" 在 VS Code 1.80+ 上直接失效,Chrome 会拒绝连接,报错 Unable to launch browser: unknown error。微软已统一用 pwa-chrome 替代所有旧类型,它由 Debugger for Edge 扩展提供支持(不是 Debugger for Chrome)。
- 卸载所有名称含
Debugger for Chrome、v4.x或legacy的插件 - 在扩展市场搜索并安装
Debugger for Edge(发布者必须是 Microsoft) - 确认右下角状态栏显示“Debugger for Edge 已启用”
-
launch.json中只接受"type": "pwa-chrome",其他值均无效
Chrome 必须用命令行启动并指定 --remote-debugging-port
双击图标打开的 Chrome 默认关闭远程调试协议,VS Code 连不上就会卡在 Could not connect to localhost:9222。这不是配置问题,是 Chrome 根本没暴露接口。
- 先关掉所有 Chrome 进程:Windows 执行
taskkill /f /im chrome.exe;macOS/Linux 执行pkill -f "chrome.*9222" - 用命令行启动:
chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug -
--user-data-dir是必须的,否则 Chrome 拒绝以调试模式复用主配置 - 若 9222 被占,可换为 9223,但要同步改
launch.json中的port字段(仅request: "attach"模式需显式写)
url 和 webRoot 必须与运行时环境完全匹配
断点变空心圆,90% 是路径映射失败:VS Code 找到了断点位置,但没加载到原始源码。这和代码逻辑无关,纯属调试通道未通。
立即学习“前端免费学习笔记(深入)”;
-
url必须和浏览器地址栏**完全一致**:协议(http://,不能是file://)、端口(:5173)、路径(/login末尾斜杠有无)、哈希(#home)都要匹配 -
webRoot指向你编辑的源码根目录,比如"${workspaceFolder}/src";若项目结构是src/写代码、dist/输出,但你在dist/index.html引用./js/app.js,那webRoot就得设成"${workspaceFolder}/src" - Vite/Webpack 项目通常还需配
sourceMapPathOverrides,值取决于构建工具生成的 sourcemap 中sources字段内容,例如:"webpack:///src/*": "${webRoot}/src/*" - 静态 HTML 文件(无构建工具):
url填file:///path/to/index.html,webRoot填该 HTML 所在目录
source map 必须生成且未被忽略
没有有效的 source map,断点只能打在压缩后或打包后的代码上,变量名变成 t、e,调用栈不可读。
- Vite 项目确保
vite.config.ts中build.sourcemap为true - Webpack 项目确保
devtool设为"source-map"或"inline-source-map" - 检查浏览器开发者工具 Sources 面板里能否展开原始
.ts或.jsx文件;如果只有bundle.js,说明 source map 没生效 - 某些构建流程(如 CI 环境)可能默认禁用 source map,本地调试务必显式开启
最容易被忽略的是 --user-data-dir 参数和 sourceMapPathOverrides 的实际值来源——前者不加,Chrome 启动即失败;后者不配,Vite/Webpack 项目几乎必然断点空心。这两处没调通,其余配置再准也没用。


















