10

我正在将我的应用程序从 Angular v11 升级到 Angular v12。当我尝试升级 Angular 包时出现此错误:

ng update @angular/core@12 @angular/cli@12
Migration failed: Incompatible peer dependencies found 

Package has an incompatible peer dependency to "@angular/common" (requires "^8.1.3 || ^9.0.0" (extended), would install "12.0.0").
Package has an incompatible peer dependency to "@angular/core" (requires "^8.1.3 || ^9.0.0" (extended), would install "12.0.0").

这些只是警告,但迁移因此而失败。

我可以选择使用该--force选项来忽略不兼容的对等依赖项并稍后解决这些警告。我应该这样做吗?如果我这样做会破坏具有不兼容对等依赖项的包吗?

4

1 回答 1

9

我面临同样的问题,这是我解决的步骤

  1. 确保您的节点版本大于 10
  2. 运行ng update @angular/core@12 @angular/cli@12。您最有可能收到如下错误
Package "@angular-eslint/builder" has an incompatible peer dependency to "@angular/cli" (requires ">= 11.2.0 < 12.0.0", would install "12.0.0").
× Migration failed: Incompatible peer dependencies found.
Peer dependency warnings when installing dependencies means that those dependencies might not work correctly together.
You can use the '--force' option to ignore incompatible peer dependencies and instead address these warnings later.
  See "C:\Users\KOTIENO1\AppData\Local\Temp\ng-gY5FIE\angular-errors.log" for further details.

我们可以--force用来忽略警告的警告建议。我们现在将这样做 3) 运行ng update。这将返回我们需要运行的所有命令

Using package manager: 'npm'
Collecting installed dependencies...
Found 68 dependencies.
    We analyzed your package.json, there are some packages to update:

      Name                                    Version                  Command to update
     -------------------------------------------------------------------------------------
      @angular-eslint/schematics              4.2.0 -> 12.0.0          ng update @angular-eslint/schematics
      @angular/cdk                            11.2.11 -> 12.0.0        ng update @angular/cdk
      @angular/cli                            11.2.11 -> 12.0.0        ng update @angular/cli
      @angular/core                           11.2.12 -> 12.0.0        ng update @angular/core
      @ngrx/store                             11.1.1 -> 12.0.0         ng update @ngrx/store

    There might be additional packages which don't provide 'ng update' capabilities that are outdated.
    You can update the additional packages by running the update command of your package manager.
  1. 运行ng update @angular-eslint/schematics @angular/cdk @angular/cli @angular/core @ngrx/store --force。这是第 3 步,您的可能略有不同。记得加--forceflag

这成功运行了许多警告

npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: furaha-app@0.0.0
npm WARN Found: @angular/compiler-cli@12.0.0
npm WARN node_modules/@angular/compiler-cli
npm WARN   @angular/compiler-cli@"~12.0.0" from the root project
npm WARN   3 more (@angular-devkit/build-angular, @angular/localize, ng-packagr)
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer @angular/compiler-cli@"^12.0.0-next" from @angular-devkit/build-angular@12.0.0
npm WARN node_modules/@angular-devkit/build-angular
npm WARN   @angular-devkit/build-angular@"~12.0.0" from the root project
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: furaha-app@0.0.0
npm WARN Found: typescript@4.2.4
npm WARN node_modules/typescript
npm WARN   typescript@"4.2.4" from the root project
npm WARN   4 more (@angular-devkit/build-angular, ...)
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer typescript@"~4.2.3" from @angular-devkit/build-angular@12.0.0
npm WARN node_modules/@angular-devkit/build-angular
npm WARN   @angular-devkit/build-angular@"~12.0.0" from the root project
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: furaha-app@0.0.0
npm WARN Found: @angular/compiler@12.0.0
npm WARN node_modules/@angular/compiler
npm WARN   @angular/compiler@"~12.0.0" from the root project
npm WARN   3 more (@angular/compiler-cli, @angular/localize, ng-packagr)
  1. 通过此步骤,您的package.json文件已更新。运行ng serve以确保一切按预期工作

  2. 检查警告。大多数将与兼容性有关,因为大多数与角度相关的软件包都期望版本 10 <= @angular/core <12。这可以根据具体情况处理,例如更新这些包

于 2021-05-17T11:34:45.257 回答