为什么 angular 8 更新后 vs19 中的断点停止工作?

Why did the breakpoints in vs19 stop working after angular 8 update?

总结: 我昨天刚刚使用 angular cli 和 ng update 命令将我的 angular webproject 从版本 7.2.15 更新到 8.1.2。但是现在,如果我尝试调试我的打字稿代码,突然之间断点在 visual studio 社区 2019 中不再起作用了?

所以当我激活一个断点时,断点会变成白色并显示一个标签文本,上面写着类似这样的内容:Breakpoint set but not yet bound。

我已经尝试过的: 使用 google 时,我发现其他用户也有类似的问题,他们通过在 tsconfig.json 中设置来解决问题。

"sourceMap": true

不幸的是,这并没有改变任何东西,因为我的 tsconfig.json 已经将 属性 sourceMap 设置为 true 但断点仍然不会被击中。

我的猜测是 angular 更新在某种程度上覆盖了某些文件中的某些设置,我完全不知道。

显示一些代码: 查看我的提交比较,我注意到在 tsconfig.json 和 package.json 文件中,许多其他内容也发生了变化,例如:

tsconfig.json

+ "downlevelIteration": true,
- "module": "es2015",
+ "module": "esnext",
- "target": "es5",
+ "target": "es2015",

package.json:

- "@angular-devkit/build-angular": "^0.12.4",
+ "@angular-devkit/build-angular": "~0.801.1",
- "codelyzer": "~4.5.0",
+ "codelyzer": "^5.0.1",
- "zone.js": "~0.8.29"
+ "zone.js": "~0.9.1"
- "typescript": "3.1.6"
+ "typescript": "3.4.5"

tslint.json:

- "use-input-property-decorator": true,
- "use-output-property-decorator": true,
- "use-host-property-decorator": true,
+ "no-inputs-metadata-property": true,
+ "no-outputs-metadata-property": true,
+ "no-host-metadata-property": true,

预期 Result/Behaviour: 预期会遇到断点,这样我就可以看到我的代码中发生了什么。但正如所说,断点只是变白,不会被绑定。

最后一个问题:所以我最后的问题是:如何在 angular 8 更新后让断点在 VS2019 中再次工作?

(21.07.2019) 编辑 1: 同时,我还尝试删除 ClientApp 文件夹中的 'node_modules' 文件夹,然后使用 npm install 重新安装。不幸的是,断点仍然不会被击中。

(22.07.2019) 编辑 2 "This can't be the solution?" : 似乎将 angular 恢复到版本 7.2.15 已经修复了断点问题,我可以看看再次进入我的断点。尽管我对这种方法不太满意,因为如果能更新到当前版本就好了。 I also opened a case over at github on the official @angular/cli hub, regarding this issue. 如果有人有更好的解决方案从@7.2.15 升级到@latest stable,我会把它打开。

谢谢

将“@angular-devkit/build-angular”:“0.801.2”更改为“@angular-devkit/build-angular”:“0.801.0”

我终于找到了适合我的解决方案。

我的错误:我认为我的错误是试图同时更新 Angular 和 Angular Material!

通过调用

ng update --all 或链接 ng update @angular/core @angular/cli @angular/materials @angular/cdk 之类的更新命令,这导致 ng-cli 混淆了 @angular/core/cli 之间的依赖关系 @ angular/material/cdk...

解决方案: 相反,我不得不在两个单独的步骤中使用@latest 的一个特定案例:

ng update @angular/core@latest @angular/cli@latest 注意: 使用@latest 安装最新可用的 Angular 可以从 7 更新...所以在这种情况下是 8...

之后我运行:

ng update @angular/material @angular/cdk 注意: 如果没有 @latest,否则这会将 Angular 依赖项更新为版本 9(下一步),因为我已经将 Angular 更新为 8。(我试过了, 不得不恢复更新两次 c: sigh)

然后 Angular 8 和最新的 @angular-devkit/build-angular 安装正确,我的断点将在 visual studio.

中再次工作

希望这对遇到依赖问题的人有所帮助!

干杯!

从 Angular 8.1 升级到 8.2 时,我发现我必须将 @angular-devkit/build-angular 从 0.803.8 降级回 0.801.2。

https://github.com/angular/angular-cli/issues/15139 中所述,原因似乎是 launch.json 中的 sourceMap 中断。对我来说,它破坏了 sourceMapPathOverrides。

即使它指出它已在 angular-cli 8.2.1 中修复,但它不适用于 cli 8.3.8。