6

我正在使用 Visual Studio Code 中的 Chrome Debugger 插件来调试 Angular 应用程序。升级到使用 angular/cli@1.7.0 后,我们在调试时无法再在 VS Code 中的打字稿代码中打断点。如果我们回滚到 angular/cli@1.6.7,断点会再次开始工作。

这是我的 ng -v 输出:

Angular CLI: 1.7.0
Node: 9.2.0
OS: win32 x64
Angular: 5.2.5
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cli: 1.7.0
@angular-devkit/build-optimizer: 0.3.1
@angular-devkit/core: 0.3.1
@angular-devkit/schematics: 0.3.1
@ngtools/json-schema: 1.2.0
@ngtools/webpack: 1.10.0
@schematics/angular: 0.3.1
@schematics/package-update: 0.3.1
typescript: 2.5.3
webpack: 3.11.0

还有其他人遇到这种情况吗?

4

6 回答 6

12

对于遇到此问题的人,修复方法是修改您的 launch.json sourceMapPathOverrides,如下所示:

"sourceMapPathOverrides": { 
    "webpack:/*": "${webRoot}/*" 
}

这使用最新的@angular/cli(版本 1.7.3)为我修复了它。

在这里找到了答案。

于 2018-03-16T07:15:38.850 回答
7

角 CLI 7.2.2

Webstorm/Intellij - 断点从未命中,VSCode - 断点未验证/从未命中,Chrome 调试器- 断点完美命中。

解决方案:在 angular.json 中将 evalSourceMap 设置为“false”。

角.json

这会触发 Angular CLI 在后台使用 Webpack 来生成原始源代码(“source-map”)的源映射,而不是生成的代码(“eval”)。https://webpack.js.org/configuration/devtool

请参阅 node_modules@angular-devkit\build-angular\src\angular-cli-files\models\webpack-configs\browser.js

在此处输入图像描述

你当然可以破解 browser.js 文件来为 devtool 设置一些其他值。

于 2019-02-26T10:44:21.220 回答
4

是的,这里也一样。

有时我可以很困难地到达我想要的断点(问题似乎出在源映射上,但调试器仍然可以正常工作)。

我尝试在 VS-Code 调试器启动配置(“sourceMaps”和“trace”)中摆弄一些设置,但无济于事。

最终我将@angular/cli 回滚到 1.6.8,它又可以正常工作了。

编辑:忘了提一下,以防它有助于搜索此问题的人 - 开始调试时,断点从源文件中消失,其选项卡标记为“源映射中的只读内联内容”。

此外,@angular/cli 1.7.1 无法解决此问题。

于 2018-02-21T19:19:04.740 回答
1

同样在这里,回滚到 1.6.8(和角度 5.1.1)以使我的断点再次工作。

于 2018-02-27T10:16:26.517 回答
1

如果您正在使用带有 1 个或多个项目的 WorkSpace..

为我工作:launch.json

"version": "0.2.0",
"configurations": [
    {
        "type": "chrome",
        "request": "launch",
        "name": "ng serve",
        "url": "http://localhost:4300",
        "webRoot": "${workspaceFolder}/ProjectName",
        "sourceMapPathOverrides": { 
            "webpack:/*": "${webRoot}/*" 
        }
    }
]

1-启动项目 ng serve --port 4300

2-开始调试

于 2019-11-05T18:14:22.737 回答
1

设置sourceMapPathOverrides是不够的。

在我的例子中,index.html 文件位于“/src”中,Angular 组件位于“/src/app”中。我使用 @angular/cli 1.7.4、vscode 1.22.2 和 chrome 调试器 4.3.0。

我必须在 launch.json 中设置三个参数。

"sourceMapPathOverrides": { 
    "webpack:/*": "${webRoot}/*"
},
"webRoot": "${workspaceFolder}",
"sourceMaps": true,

sourceMaps 是可选的,但请确保它没有设置为 false。

必须为 launch.json 配置文件的每个配置设置它:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Chrome DEBUG 172.22.44.49",
            ...

在 chrome 调试器sourcemaps 文档中,据说将 webRoot 设置为提供文件的目录。但要解决这个问题,我必须将其设置为工作区根目录。

于 2018-04-25T12:36:37.353 回答