我正在尝试使用此处的说明将 Angular 7 应用程序升级到 Angular 8 。一切顺利,直到最后一步:
ng更新@角/材料
这将 Angular Material 包更新到 8.1.2,但也将 @angular/* 包升级到了一个相当奇怪的不受欢迎的版本:~9.0.0-next.0
这是有问题的(我必须摆脱需要 Angular <= 8 的非必要开发依赖项),因为我不想超越最新的稳定版本 8。
我应该如何解决这个问题?
问题是,在运行之前ng update @angular/material
,您的一些依赖项已经打开8.2.0
,而@angular/material
仍在版本 7 上。
ng update @angular/material
显然只检查是否有可用的更新@angular/material
- 而不是它可能在途中更新的其他依赖项。因此,当您启动该命令时,它注意到有一个更新的版本可用并继续进行更新。其他依赖项得到了更新,就像在更新之前它们在版本 8 上一样(并且有版本 9 可用)。
这就是为什么在进行更新之前您必须始终注意所有版本是否已对齐。
只是一个小观察:9.0.0-next.0
在您进行更新前一小时发布。因此,如果您在此之前这样做,您将不会遇到任何这些问题。
解决此问题的可能方法是手动编辑package.json
并将依赖关系与版本更改^9.0.0-next.0
为^8.2.0
社区似乎认为这是一个错误。请参阅: https ://github.com/angular/angular-cli/issues/14980 (向下滚动)。