VSCode调试SPFx Field Customizer时断点无法触发
针对VS Code调试SPFX字段自定义器时断点不触发,但浏览器开发者工具断点正常,且WebPart调试无问题的情况,可尝试以下解决步骤:
修正webRoot配置
将调试配置中的webRoot从空字符串改为项目根目录路径:"webRoot": "${workspaceFolder}"VS Code需要明确项目根路径才能正确映射源码与source map。
匹配sourceMapPathOverrides与实际webpack路径
打开浏览器开发者工具的Sources面板,找到webpack://下的src文件,查看其路径前缀(比如是webpack:///../../src/*还是webpack:///../../../src/*),然后在调试配置中补充对应的映射规则,比如:"sourceMapPathOverrides": { "webpack:///../../src/*": "${webRoot}/src/*", "webpack:///../../../src/*": "${webRoot}/src/*", "webpack:///../../../../src/*": "${webRoot}/src/*" }验证调试URL中的字段自定义器ID
确保URL里fieldCustomizers参数中的id是项目中字段自定义器的实际GUID,可从config/package-solution.json或src/extensions/[你的自定义器文件夹]/[自定义器名称].manifest.json中获取,不要使用占位符myGUID。清理缓存并重建项目
停止当前gulp serve进程,执行以下命令清理缓存并重建:gulp clean && gulp build && gulp serve --nobrowser旧的temp或lib文件夹中的缓存文件可能导致source map失效。
改用attach模式调试
先手动启动Chrome并开启远程调试端口:chrome.exe --remote-debugging-port=9222在该Chrome实例中打开调试URL,然后在VS Code中使用attach配置:
{ "name": "Attach to FieldCustomizer", "type": "chrome", "request": "attach", "port": 9222, "webRoot": "${workspaceFolder}", "sourceMaps": true, "resolveSourceMapLocations": [ "${workspaceFolder}/**", "!**/node_modules/**" ], "sourceMapPathOverrides": { "webpack:///../*/src/*": "${webRoot}/src/*" } }attach模式对SPFX扩展的调试兼容性通常更稳定。
调整resolveSourceMapLocations范围
扩大source map的识别范围,确保本地调试资源被正确捕获:"resolveSourceMapLocations": [ "${workspaceFolder}/**", "https://localhost:4321/**", "!**/node_modules/**" ]
内容的提问来源于stack exchange,提问作者Andrew Gaskell

