Angular Chrome调试器扩展在VS Code中异常的技术求助
我之前也碰到过类似的断点错位、首次调试需刷新的问题,结合你给出的Angular CLI 1.7.4和VS Code 1.22.1版本信息,给你几个针对性的排查和解决步骤:
检查Angular CLI的SourceMap配置
断点错位大概率和SourceMap生成异常有关。打开项目根目录下的.angular-cli.json(1.7.4版本使用该配置文件,而非后续版本的angular.json),找到defaults.build节点,确保sourceMap设为true;如果不需要调试第三方依赖,建议把vendorSourceMap设为false,避免干扰断点定位:"defaults": { "build": { "sourceMap": true, "vendorSourceMap": false } }清理缓存并重新构建项目
旧的编译产物或SourceMap残留是调试异常的常见诱因:- 删除项目根目录下的
dist文件夹 - 打开Chrome浏览器,按
Ctrl+Shift+Delete(Windows)/Cmd+Shift+Delete(Mac)清除缓存,选择「全部时间」范围,重点清理「缓存的图片和文件」 - 重新运行
ng serve启动项目,不要依赖之前的缓存构建产物
- 删除项目根目录下的
验证VS Code的launch.json配置
虽然之前配置正常,但可能不小心被修改。检查你的launch.json,确保以下关键配置项正确:{ "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "Launch Chrome against localhost", "url": "http://localhost:4200", "webRoot": "${workspaceFolder}/src", "sourceMaps": true, "userDataDir": "${workspaceFolder}/.vscode/chrome", "runtimeArgs": ["--disable-session-crashed-bubble"] } ] }重点确认
webRoot指向项目的src目录,sourceMaps设为true,url和ng serve启动的端口(默认4200)一致。另外,添加userDataDir可以隔离Chrome的缓存和插件,避免干扰调试环境。降级Chrome Debugger扩展版本
你提到之前调试正常、最近才出问题,大概率是Chrome Debugger扩展更新后,和老旧的VS Code 1.22.1兼容性冲突。可以在VS Code扩展商店找到Chrome Debugger,点击扩展详情页的「管理」按钮,选择「安装另一个版本」,回退到你之前正常使用时的版本(比如尝试v4.x系列版本,适配旧版VS Code的兼容性更好)。调试前彻底关闭Chrome
有时候Chrome的后台进程会残留缓存或旧的调试会话,导致首次调试需要刷新。启动调试前,关闭所有Chrome窗口,包括后台的Chrome进程,再通过VS Code启动调试。
内容的提问来源于stack exchange,提问作者Rafael Pol

