VSCode调试React项目时断点不生效怎么办?
我在用VSCode调试本地的React项目,已经装了Debugger for Chrome插件,也配好了launch.json,但打的断点总是变成灰色,提示“未验证的断点”。试过重启编辑器、重新编译项目都不行。
我的launch.json配置是这样的:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/src"
}
]
}
项目是用Create React App创建的,开发服务器正常运行在3000端口。是不是webRoot路径配错了?还是需要额外的sourceMap配置?
你的 webRoot 设置成了
${workspaceFolder}/src,但实际上应该是${workspaceFolder},也就是项目根目录。VSCode 需要从根目录去匹配 source map,而不是从 src 目录开始。我的做法是直接改成这样:
关键改动有两点。第一,webRoot 改成项目根目录。第二,加上 sourceMapPathOverrides 配置,因为 Create React App 用 webpack 打包后的 source map 路径是
webpack:///src/*这种格式,需要手动映射回本地的 src 目录。另外多说一句,Debugger for Chrome 这个插件已经废弃了,VSCode 现在内置了 JavaScript Debugger,建议把插件卸载掉,直接用内置的就行,体验更好。
改完配置记得重启一下调试,断点应该就能正常命中了。如果还不行,检查一下 CRA 项目有没有正常生成 source map,开发环境下默认是开启的,但如果你改过配置就得注意一下。