【问题标题】:After Angular update npm install fails because of peer dependency conflicts由于对等依赖冲突,Angular update npm install 失败后
【发布时间】:2021-10-14 16:55:54
【问题描述】:

我在更新 Angular 版本时遇到问题。当我使用ng update 时,我得到以下输出:

Name                                       Version                  Command to update
     ----------------------------------------------------------------------------------------
      @angular/cdk                               12.1.2 -> 12.2.0         ng update @angular/cdk
      @angular/cli                               12.1.2 -> 12.2.0         ng update @angular/cli
      @angular/core                              12.1.2 -> 12.2.0         ng update @angular/core
      @angular/material                          12.1.2 -> 12.2.0         ng update @angular/material

之后我尝试使用以下命令更新所有四个:

ng update @angular/cdk @angular/cli @angular/core @angular/material -C

package.json 已更新,然后运行 ​​npm i 以安装所有软件包。在这里我遇到以下错误:

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! Found: @angular-devkit/build-angular@12.1.2
npm ERR! node_modules/@angular-devkit/build-angular
npm ERR!   dev @angular-devkit/build-angular@"^12.2.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! dev @angular-devkit/build-angular@"^12.2.0" from the root project
npm ERR! 
npm ERR! Conflicting peer dependency: @angular/localize@12.2.0
npm ERR! node_modules/@angular/localize
npm ERR!   peerOptional @angular/localize@"^12.0.0 || ^12.2.0-next" from @angular-devkit/build-angular@12.2.0
npm ERR!   node_modules/@angular-devkit/build-angular
npm ERR!     dev @angular-devkit/build-angular@"^12.2.0" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

我不知道为什么在package.json 中所有@angular 相关文件都将~12.2.0 声明为版本时显示Found: @angular-devkit/build-angular@12.1.2。

【问题讨论】:

  • 你的 package.json 中有什么?这似乎是说您需要将它所说的两个软件包更新为所需的版本。不清楚你到底在这里不明白什么?

标签: angular npm


【解决方案1】:

删除node_modules 并重新安装。 还要确保package.json 没有重复的依赖项。

【讨论】:

    【解决方案2】:

    尝试删除node_modules 文件夹和package-lock.json 文件,然后重新安装npm,这可能会解决您的问题。

    所以,运行以下命令:

    remove node_modules 
    remove package-lock.json
    npm install 
    

    【讨论】:

    • 在你回答之前就这样解决了,但是既然你写了正确的答案,我想你得到了接受的答案
    • 我写了正确的答案,而你给了他功劳——那是错误的
    • 这对我有用。但我还需要从nodejs.org更新我的 npm 版本@
    【解决方案3】:

    你应该永远不要像那样全面升级angular。相反,它是按层次顺序排列的——因为其中许多依赖关系只是相互依赖。所以他们中的一些人消失了。

    只需删除 node_modules并再次运行npm install即可轻松解决此问题。

    这次按顺序:

       npm install @angular/cli@latest -g
       ng update @angular/cli,
       ng update @angular/common
       npm install @angular/cdk@latest
       npm install @angular/material@latest
    

    在 Angular 12.2 中,如果您运行 npm audit fix 会有关于 chokidar 的警告,它不会做任何事情,还有其他几个 - 您只需要等到他们修复它们,因为它们是开发依赖。

    这是取自一个实时项目 通用的当前工作版本:{

     "@angular/animations": "~12.1.0",
        "@angular/cdk": "^12.2.0",
        "@angular/common": "~12.1.0",
        "@angular/compiler": "~12.1.0",
        "@angular/core": "~12.1.0",
        "@angular/fire": "^6.1.5",
        "@angular/forms": "~12.1.0",
        "@angular/platform-browser": "~12.1.0",
        "@angular/platform-browser-dynamic": "~12.1.0",
        "@angular/platform-server": "~12.1.0",
        "@angular/router": "~12.1.0",
        "@angular/service-worker": "~12.1.0",
        "@easypost/api": "^3.11.2",
        "@nguniversal/express-engine": "^12.1.0",
        "bootstrap": "^5.0.2",
        "dayjs": "^1.10.6",
        "express": "^4.15.2",
        "firebase": "^8.8.1",
        "ngx-quill": "^14.1.2",
        "quill": "^1.3.7",
        "quill-image-resize-module": "^3.0.0",
        "rxjs": "~6.6.0",
        "tslib": "^2.2.0",
        "zone.js": "~0.11.4"
    }
    

    【讨论】:

    • 尽管修复了您的命令以更正语法,但它对我来说不起作用,因为在 ng update @angular/cli 之后,由于错误的 @angular-devkit/build-angular 版本,我已经收到依赖错误。找到 12.1.2,想要 12.2.0。我开始相信项目设置本身存在问题。我自己没有生成它,但我的任务是继续对其进行工作,并希望在开始之前更新所有内容。
    • 很抱歉,我没有意识到我输入的是升级而不是更新。我为我们部署的项目放置了当前工作版本,并且与我们的 package.json 没有不匹配 - 希望这会对您有所帮助......但您确实需要删除 node_modules 文件夹,因为这些依赖项有时在更新时也会卡住。
    • 我已经删除了 node_modules 文件夹,实际上ng update 是自己做的。问题的根源似乎在 package-lock.json 文件中。至少在删除该文件然后删除 node_modules 并运行npm i 之后,它按预期工作。可能是描述了一些导致错误的对等依赖项。
    猜你喜欢
    • 2022-07-22
    • 1970-01-01
    • 2022-08-12
    • 2014-08-08
    • 2021-12-14
    • 2023-02-06
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多