【问题标题】:Angular update from 8 to 13 peer dependency problem从 8 到 13 对等依赖问题的 Angular 更新
【发布时间】:2022-01-14 17:13:53
【问题描述】:

我正在按照 Angular 更新指南更新我的 Angular 应用程序,但我遇到了对等依赖项的错误。

首先我从 angular 8 更新到 9,但仍然存在对等依赖错误。所以我将此命令与--force 参数一起使用:

cmd /C "set "NG_DISABLE_VERSION_CHECK=1" && npx @angular/cli@9 update @angular/cli@9 @angular/core@9" --force

它有效!

然后从 Angular 9 到 10,同样的方法

npx @angular/cli@10 update @angular/core@10 @angular/cli@10 --force

而且它也有效。现在我想继续使用 Angular 11、12 和 13,但是当我使用这个命令时:

npx @angular/cli@11 update @angular/core@11 @angular/cli@11 --force

我收到此错误:

安装的 Angular CLI 版本已过时。
安装临时 Angular CLI 版本 11.2.18 以执行更新。
通过 npm 安装工具包。
通过 npm 安装工具包。
使用包管理器:'npm'
正在收集已安装的依赖项...
找到 61 个依赖项。
正在从注册表中获取依赖元数据...
包“@swimlane/ngx-charts”对“@angular/animations”有不兼容的对等依赖(需要“7.x || 8.x”(扩展),将安装“11.2.14”)。
包“@ng-bootstrap/ng-bootstrap”对“@angular/forms”有不兼容的对等依赖(需要“^8.0.0”(扩展),将安装“11.2.14”)。
包“@swimlane/ngx-charts”对“@angular/platform-b​​rowser”有不兼容的对等依赖(需要“7.x || 8.x”(扩展),将安装“11.2.14”)。
包“@swimlane/ngx-charts”对“@angular/platform-b​​rowser-dynamic”有不兼容的对等依赖(需要“7.x || 8.x”(扩展),将安装“11.2.14”)。
使用依赖项 @angular-devkit/build-angular @“0.1102.18”(原为“0.1002.4”)更新 package.json...
使用依赖项 @angular/cli @“11.2.18”(原为“10.2.4”)更新 package.json...
使用依赖项 @angular/compiler-cli @“11.2.14”(原为“10.2.5”)更新 package.json...
使用依赖项 @angular/language-service @“11.2.14”(原为“10.2.5”)更新 package.json...
使用依赖 karma @“6.3.11”(原为“5.0.9”)更新 package.json...
使用依赖项 @angular/animations @“11.2.14”(原为“10.2.5”)更新 package.json...
使用依赖项 @angular/common @“11.2.14”(原为“10.2.5”)更新 package.json...
使用依赖项 @angular/compiler @“11.2.14”(原为“10.2.5”)更新 package.json...
使用依赖项 @angular/core @“11.2.14”(原为“10.2.5”)更新 package.json...
使用依赖项 @angular/forms @“11.2.14”(原为“10.2.5”)更新 package.json...
使用依赖项 @angular/platform-b​​rowser @“11.2.14”(原为“10.2.5”)更新 package.json...
使用依赖项 @angular/platform-b​​rowser-dynamic @“11.2.14”(原为“10.2.5”)更新 package.json...
使用依赖项 @angular/router @“11.2.14”(原为“10.2.5”)更新 package.json...
更新 package.json(2808 字节)
⠧ 安装包 (npm)...npm 错误!代码 ERESOLVE
npm 错误! ERESOLVE 无法解决
npm 错误!
npm 错误!解析时:stacked@0.0.0
npm 错误!找到:@angular-devkit/build-angular@0.1002.4
npm 错误! node_modules/@angular-devkit/build-angular
npm 错误! dev @angular-devkit/build-angular@"~0.1102.18" 来自根项目
npm 错误!
npm 错误!无法解决依赖关系:
npm 错误! dev @angular-devkit/build-angular@"~0.1102.18" 来自根项目
npm 错误!
npm 错误!冲突的对等依赖关系:@angular/compiler-cli@11.2.14
npm 错误! node_modules/@angular/compiler-cli
npm 错误!来自@angular-devkit/build-angular@0.1102.18的对等@angular/compiler-cli@"^11.0.0 || ^11.2.0-next"
npm 错误! node_modules/@angular-devkit/build-angular
npm 错误! dev @angular-devkit/build-angular@"~0.1102.18" 来自根项目
npm 错误!
npm 错误!修复上游依赖冲突,或者重试
npm 错误!此命令与 --force 或 --legacy-peer-deps
npm 错误!接受不正确(并且可能被破坏)的依赖解决方案。
npm 错误!
npm 错误!有关完整报告,请参阅 C:\Users\leino\AppData\Local\npm-cache\eresolve-report.txt。

npm 错误!可以在以下位置找到此运行的完整日志:
npm 错误! C:\Users\leino\AppData\Local\npm-cache_logs\2022-01-14T16_41_50_262Z-debug.log

✖ 包安装失败,见上文。
× 迁移失败。有关详细信息,请参见上文。

我知道使用 --force 参数是个坏主意,但更喜欢在 Angular 更新后解决对等依赖项,而不是在每个版本上。

请问有人知道吗?

【问题讨论】:

  • 这是一个依赖 - 不是一个依赖 - 在那个词的任何地方都没有“a”......
  • 谢谢@marc_s。在法语中,它被称为“dépendance”,带有“a”。
  • 你可能会遇到 npm 的问题,因为在 v8+ 中它会尝试升级 package-lock.json 的版本。我的建议是安装 npm v7 进行角度升级,然后再次安装最新的 npm
  • 这可能会给你更多的想法stackoverflow.com/a/68159069/4604645

标签: angular npm npx


【解决方案1】:

我今天遇到了完全相同的问题。这就是我修复它的方法:

npx @angular/cli@11 update @angular/core@11 @angular/cli@11 --force
# now getting the same errors as above
npm install @angular-devkit/build-angular@~0.1102.18 --force
git checkout -- .
npx @angular/cli@11 update @angular/core@11 @angular/cli@11 --force

现在转到package.json 并删除包含@angular-devkit/build-ng-packagr 的行。

执行以下行:

rm package-lock.json
rm -rf node_modules
npm install

完成!

也许从 package.json 中删除该特定行加上 npm install 就足够了,上面的其他命令是不必要的,但我宁愿告诉你我所做的一切 :)

顺便说一句,在我尝试所有这些之前,我还按照上面其中一个 cmets 中的建议降级到 npm v7,但我认为这没有必要或没有任何帮助。

【讨论】:

    【解决方案2】:

    我刚刚遇到了这个确切的问题,运行此命令为我解决了问题:

    npm install @angular-devkit/build-angular@~0.1102.18 --force
    

    【讨论】:

      【解决方案3】:

      从 8 升级到 13 !!这就是我会做的!

      1. 使用
        sudo npm uninstall -g @angular/cli卸载全局@angular/cli

      2. 使用
        sudo npm install -g @angular/cli安装最新的全球版本的angular cli

      3. 使用
        sudo npm list -g depth0检查安装的全局版本

      4. 使用创建新项目 sudo ng new yourProjectName

      5. 删除node_modules文件夹和package-lock.json file

      6. 移动旧项目文件(不要覆盖 angular.jsonpackage.json 文件,而是将非角度 npm 包从旧项目 package.json 移动到新项目 package.json 文件)

      7. 运行sudo npm install

      8. 运行 ng serve 并解决您的应用程序错误

      祝你好运

      【讨论】:

      • 我不能使用这个解决方案,因为它会创建一个我想保留的新 git 历史记录。
      【解决方案4】:

      找到了! 那是我的节点版本的问题。我正在使用 v16.9 并安装节点 v14.19 解决了我的问题。

      我借此机会安装了 windows-nvm 以便能够管理许多节点版本。

      1. 卸载节点
      2. 安装windows-nvm https://github.com/coreybutler/nvm-windows
      3. 使用节点 v14.19
      4. 升级到 Angular 11 !

      【讨论】:

        【解决方案5】:

        从版本 10 升级到 11 的主要区别在于 Angular 的模块 @angular-devkit/build-angular 及其相关依赖项已移至单个模块中。

        您会注意到 @angular-devkit/build-angular@0.1002.4 更改为 @angular-devkit/build-angular@semantic-versioning-that-aligns-with-其他角度模块的其余部分

        话虽如此,您需要在 angular.json 和其他配置文件中进行一些更改。 最简单的事情(在运行 npx update 之后)是创建一些临时的 hello-world 项目,并比较所有配置文件

        版本 11 到 12 似乎更直接。然后从版本 12 到 13,他们需要您拥有 NodeJs 版本 12.20.0 或更高版本。例如,您可能需要进行一些代码调整:如果您使用 Service Worker 之类的东西,因为其中一些方法已被弃用。

        【讨论】:

          猜你喜欢
          • 2021-05-22
          • 2020-01-13
          • 2022-01-06
          • 1970-01-01
          • 2020-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多