【问题标题】:Unable to resolve dependency tree error when installing npm packages安装 npm 包时无法解决依赖关系树错误
【发布时间】:2021-06-25 17:23:14
【问题描述】:

当尝试使用npm i 命令安装 npm 包时,我收到以下异常:

我已尝试重新安装 Node.js 包并将代理设置为关闭:

set HTTP_PROXY=
set HTTPS_PROXY=

问题仍然存在。我做错了什么?

更新:

当我运行以下命令时:

npm install --legacy-peer-deps

显示如下错误:

【问题讨论】:

  • 显示你的 package.json - 看起来你升级了@angular/core,但没有升级@angular/http?
  • 我的@angular/core 版本是9.1.4,所以我应该更新@angular/http 吗?
  • 请分享您的package.json 文件。问题似乎出在您的依赖项中
  • 你可以尝试删除 package-lock.json 和 node_modules 并尝试运行 npm update 吗?让我知道它是否有效。
  • 这种情况还在发生吗?可以分享一下 package.json 文件吗?

标签: angularjs angular typescript npm angular9


【解决方案1】:

这对我有用 npm install --save --legacy-peer-deps

【讨论】:

    【解决方案2】:

    这是节点版本的问题 一些最新版本的节点可能会显示此类错误。

    https://github.com/nvm-sh/nvm 我使用 NVM 管理系统上的 Node 版本 并使用节点 12 克服此错误

    更改版本的命令

    nvm use 12
    

    【讨论】:

      【解决方案3】:

      ERESOLVE 无法解决依赖树错误,然后添加任何依赖安装的最后一个 --legacy-peer-deps

      喜欢:我正在安装socket.io,所以我在最后添加了--legacy-peer-deps

      $ npm install @nestjs/platform-socket.io @types/socket.io --legacy-peer-deps

      【讨论】:

        【解决方案4】:

        终于,我找到了答案。试试这个命令 -

        npm install --save --legacy-peer-deps
        

        【讨论】:

          【解决方案5】:

          尝试 2 个选项来解决此问题 option1 => 运行后删除 node_modules 和 package_lock.json
          npm cache clean --force 在 npm i --force 之后 选项 2 => 运行 npm install --save --legacy-peer-deps

          【讨论】:

            【解决方案6】:

            NPM 可用于安装和管理项目中的依赖版本。

            我在与 npm 版本相关的 React 版本上遇到了同样的问题

            npm 发现错误类型/react@16.14.20

            因此可能需要根据您的package.json 安装包版本

            npm@7 版本报错,无法安装节点模块。 如果您将 npm 版本降级到 6,这些问题将变成警告并且问题将得到解决。

            • 尝试证明这个命令:npm install -g npm@6

            • 检查是否已安装版本:npm --version

            • 删除并安装 node_modules 包:

              a) 移除 rm -rf node_modules

              b) 安装:npm i

            【讨论】:

              【解决方案7】:

              首先要了解问题。这是我的错误:

              npm ERR! ERESOLVE unable to resolve dependency tree
              npm ERR!
              npm ERR! While resolving: project-admin@11.0.0
              npm ERR! Found: @angular/common@11.0.3
              npm ERR! node_modules/@angular/common
              npm ERR!   @angular/common@"11.0.3" from the root project
              npm ERR!
              npm ERR! Could not resolve dependency:
              npm ERR! peer @angular/common@"^9.1.0 || ^10.0.0" from @agm/core@3.0.0-beta.0
              npm ERR! node_modules/@agm/core
              npm ERR!   @agm/core@"3.0.0-beta.0" from the root project
              

              首先你应该开始从底部到顶部阅读问题。这里@agm/core@3.0.0-beta.0 需要 angular common 9.1.0 或 10.0.0。最上面的消息说找到的 angular common 实际上是 11.0.3。

              (如果你想更好地理解依赖关系,这里是一个非常简单的站点:How npm3 Works

              dependencies — these are the essential dependencies that you rely on and call in your project’s code
              devDependencies — these are your development dependencies, for example, a prettier library for formatting code
              peerDependencies — if you set a peer dependency in your package.json, you are telling the person who installs your package that they need that dependency with the specified version
              optionalDependencies — these dependencies are optional and failing to install them will not break the installation process
              bundledDependencies — it’s an array of packages that will come bundled with your package. This is useful when some 3rd party library is not on NPM, or you want to include some of your projects as modules
              

              那么解决方案应该是什么?问题在于对等依赖关系。解决方案是降级 angular common 解决方案是使用遗留的依赖逻辑来安装包使用 --legacy-peer-deps。所以 --legacy-peer-deps 不会尝试自动安装 peerDependencies。这对你有用吗?可能是。但是您应该添加具体说明如何执行此操作,或者使用 --legacy-peer-deps 自动使用来自先前答案之一的此代码安装项目包:

              npm config set legacy-peer-deps true
              

              在我的例子中,我安装了包并尝试运行ng serve,但是因为使用了--legacy-peer-deps,所以有一些依赖包没有安装。我必须手动安装它们(因为我没有从上面的代码中设置配置)。最后手动安装了大约五个包,全部带有--legacy-peer-deps,我以一个无法安装的包结束,我没有尝试继续,因为我的项目正在抛出警告像疯了一样,也有很多包要审计。所以我决定不使用这个包并寻找替代方案。

              我一路读到的其他解决方案:

              • 将 Node.js 降级到 v14。这将降级 npm。它可能不是 v14,但这是降级最广泛的版本。
              • 有些人使用Yarn 强制安装包 - 我个人不明白这是如何工作的,因为我没有使用过 Yarn。
              • 将 Angular 和全局 Angular CLI 版本降级为满足要求的版本。就我而言,它是 angular/common,而在问题中它是 angular/core,但两者都需要降级整个 ​​angular right(我在这里不确定)。
              • 您安装的软件包可能具有不需要降级 Angular 的更高版本。您可以尝试使用 https://updatepackagejson.com/ 将您的软件包升级到最新版本,但这是为了以防您的项目是全新的。

              【讨论】:

              • 这应该被接受的答案
              【解决方案8】:

              Yarn 具有解决此问题的功能。如果可以,请尝试使用它来安装包。

              【讨论】:

              • 你能说明是哪个功能吗?
              【解决方案9】:

              问题与依赖冲突或依赖关系损坏有关。您可以通过强制安装来接受不正确的依赖关系。

              解决方法:使用--force的命令。

              您的命令将类似于npm install --force @your-npm-package

              注意:您可以使用 yarn 安装依赖项,如果它可以通过 yarn 包管理器安装。

              【讨论】:

                【解决方案10】:

                我多次遇到这个问题。终于找到了解决办法:

                npm install react-native-paper  --legacy-peer-deps
                

                【讨论】:

                  【解决方案11】:

                  首先使用npm i --legacy-peer-deps 标志,然后使用--force 标志。

                  【讨论】:

                    【解决方案12】:

                    我通过将 Node.js 的版本从上一个版本降低到 LTS 版本来解决这个问题。

                    【讨论】:

                      【解决方案13】:

                      在我的情况下,我遇到了 @babel/core 依赖项的问题,但我不想使用 --force,因为我不确定后果,所以我去了https://www.npmjs.com/,寻找软件包并将我的旧版本替换为最新版本。这样就成功了。

                      【讨论】:

                        【解决方案14】:

                        第一次尝试

                        npm install
                        

                        它给了我错误unable to resolve dependency tree 并基于此命令的帮助信息,

                        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.
                        

                        我试过这个命令:

                        npm install --legacy-peer-deps
                        

                        它解决了我的问题。

                        【讨论】:

                          【解决方案15】:

                          我遇到了同样的问题

                          npm install --legacy-peer-deps
                          

                          这也适用于我。但我有一个更简单的答案。只需在所需的 package.json 文件中更改它的版本号。然后使用

                          npm i
                          

                          这将解决您的问题(像往常一样生成一个新项目,没有任何潜在的依赖关系问题)。

                          【讨论】:

                            【解决方案16】:

                            以前的答案都没有帮助我。

                            对我来说,使用 npm i -g npm 将 npm 更新到最新版本(从 7.8 到 7.11.1)解决了我的问题。

                            【讨论】:

                              【解决方案17】:
                              1. 在文件package.json中添加依赖
                              2. npm install

                              仍然看到错误?那么

                              npm install --force`
                              

                              【讨论】:

                                【解决方案18】:

                                最快的解决方案:npm install --legacy-peer-deps

                                说明:

                                在 npm 版本 3 到 6 中,peerDependencies 不会自动安装,如果在树中发现无效版本的对等依赖项,则会发出警告。从 npm v7 开始,peerDependencies 默认安装

                                npm docs: peerDependencies

                                您的依赖项包含一些与根项目的依赖项冲突的 peerDependencies。

                                正如npm ERR 日志中所述。

                                【讨论】:

                                  【解决方案19】:
                                  1. 如果您的根目录中有node_modules 文件夹和package-lock.json 文件,请删除它们:

                                    rm -r node_modules
                                    rm package-lock.json
                                    
                                  2. 然后运行命令:

                                    npm install --save --legacy-peer-deps
                                    npm audit fix --force
                                    
                                  3. 在根目录下创建.env文件并粘贴以下代码:

                                    SKIP_PREFLIGHT_CHECK=true
                                    
                                  4. 现在,开始你的项目:

                                    npm start
                                    

                                  【讨论】:

                                    【解决方案20】:

                                    就我而言,在将npm 从版本 6 升级到 7 后,我开始收到错误消息(如下)。

                                    npm 错误!代码 ERESOLVE npm 错误! ERESOLVE 无法解决依赖关系 树

                                    ...

                                    npm 错误!修复上游依赖冲突,或使用 --force 或 --legacy-peer-deps 重试此命令以接受不正确(且可能损坏)的依赖解析。

                                    在我的例子中,使用 --legacy-peer-deps--force 标志编译会导致一个无用的包。

                                    所以我尝试使用yarn install 删除node_modulespackage-lock.json 和捆绑包。这会生成一个 yarn.lock 文件并创建在后续 npm 运行中运行良好的 package-lock.json。

                                    PS:我正在使用临时解决方法,直到 npm 7 与我的项目正常工作:之后,我将删除 yarn.lockpackage-lock.json 和文件夹node_modules,然后用npm重新编译

                                    rm -rf node_modules
                                    rm package-lock.json
                                    yarn install
                                    # Generates a yarn.lock file and a new package-lock.json
                                    
                                    # Continue with npm
                                    npm start
                                    

                                    【讨论】:

                                      【解决方案21】:

                                      这是解决方案。

                                      进入项目目录并执行:

                                      sudo rm ./package-lock.json
                                      sudo npm install --force
                                      

                                      【讨论】:

                                        【解决方案22】:

                                        我刚刚更新了我的 Node.js,它对我有用:

                                        node -v
                                        

                                        输出:

                                        V xxxx
                                        

                                        还有:

                                        sudo npm install -g n
                                        

                                        (使用此命令安装稳定节点版本。)

                                        sudo n stable
                                        

                                        【讨论】:

                                          【解决方案23】:

                                          我终于找到了解决办法:

                                          • 安装 nvm
                                          • 使用nvm安装Node.js
                                          • 输入 cmd 使用 LTS 版本
                                          • 之后,我的安装工作正常了。它应该也适合你。

                                          【讨论】:

                                            【解决方案24】:

                                            这与 HTTP 代理无关。

                                            正如上面所说,您有 依赖冲突不正确并且可能损坏依赖),因此请尝试使用--force 运行命令,或--legacy-peer-deps。如果不生效,临时解决方案使用Node.js的旧版本(降级Node.js版本),因为它会导致此类错误有时会发生。

                                            根据 OP 的更新进行更新

                                            如您所见,它会引发以下错误:

                                            没有找到与@angular/http@^9.1.4 匹配的版本。

                                            看看angular/http page请注意,该已弃用软件包的最新版本是 7.2.16,而您需要更高版本(例如,^9.1.4!因此,请尝试检查项目依赖关系并按照引发的错误来解决问题。

                                            【讨论】:

                                            • @Pearl 请显示--force--legacy-peer-deps 命令的输出结果
                                            • 感谢 npm install --legacy-peer-deps 为我工作
                                            • 该标志是否只安装对等部门?
                                            • @Aashiqahmed 它告诉 NPM 忽略对等部门并继续安装
                                            • ,react 项目中的文件夹> 在集成终端中打开我有以下错误 $ npm install npm ERR!代码 ERESOLVE npm 错误! ERESOLVE 无法解析依赖关系树 下面的命令有效。感谢 npm install --legacy-peer-deps
                                            【解决方案25】:

                                            当使用npm 7 时,这会出现很多,因为对等依赖问题在版本 7 中被视为错误,而在版本 6 中它们通常只是警告。通常使用 --legacy-peer-deps 使其与 npm 7 一起使用。

                                            如果这不起作用,一个选项是降级到npm 6. 降级 Node.js 不是必需的(但也无害)。相关的依赖管理代码在npm。降级 Node.js 通常会巧合,因为这样做通常也会降级 npm

                                            与降级 npm 相比,破坏性较小的另一个选项是使用 npx 将先前版本的 npm 仅用于安装命令:npx -p npm@6 npm install

                                            当所有其他方法都失败时,通常值得尝试删除node_modules 目录和package-lock.json,然后再次运行npm install。这会重新生成 node_modulespackage-lock.json

                                            【讨论】:

                                            • 永久降级到 npm 6 的最佳方法是什么?
                                            • @alentejo 通过删除 C:\Users\{your name}\AppData\Roaming 中的 npm 文件夹,npm cache clear --force 然后 npm install -g npm@
                                            【解决方案26】:

                                            即使在卸载/安装 NPM 和 CLI 之后仍然无法正常工作,请确保您位于项目文件夹中。例如,您创建了一个根文件夹“myapplication”。现在,您正在运行 CLI 命令以在 myapplication 文件夹下创建一个全新的应用程序。运行命令后,您会收到类似“ERESOLVE 无法解析依赖树”的错误。因此,不要在 myapplication 文件夹上运行命令,而是转到 myapplication 文件夹中的新应用程序文件夹并运行/执行 Angular 应用程序。它会工作得很好。

                                            【讨论】:

                                              【解决方案27】:

                                              对于那些在安装 Bootstrap Paginator 或 table next 时遇到错误的人

                                              npm install react-bootstrap-table2-paginator --save
                                              

                                              npm install react-bootstrap-table-next --save
                                              

                                              解决方案: 在like命令后添加--legacy-peer-deps

                                              • npm install react-bootstrap-table2-paginator --save --legacy-peer-deps
                                              • npm install react-bootstrap-table-next --save --legacy-peer-deps

                                              【讨论】:

                                                【解决方案28】:

                                                以防万一,当我尝试 npm upgrade 我当前基于 Angular 11.x 的样板从以前的 ng new 或创建新的基于 Angular 12.x 的 ng new abc 时,我确实有类似的行为。我只是忘记升级 Angular CLI。所以这个npm install -g @angular/cli@latest 解决了我在ng new abc 期间的错误。

                                                【讨论】:

                                                  【解决方案29】:

                                                  重置package-lock.json 一直对我有用:

                                                  git checkout -- package-lock.json
                                                  

                                                  详情: 在更新遗留项目的所有包时经常遇到这种情况 - 我强烈不建议使用 npm audit fixnpm i --force。删除package-lock.json 也不是一直对我有用。回滚到 package.json + package-lock.json 的工作版本并添加包对我来说是最安全和最快的变体。

                                                  【讨论】:

                                                    【解决方案30】:

                                                    做简单的事:

                                                    npm install --save --legacy-peer-deps
                                                    

                                                    【讨论】:

                                                    • 虽然这个代码块可能会回答这个问题,但最好能稍微解释一下为什么会这样。
                                                    猜你喜欢
                                                    • 1970-01-01
                                                    • 2022-11-05
                                                    • 2022-06-17
                                                    • 2023-02-08
                                                    • 2023-02-08
                                                    • 1970-01-01
                                                    • 2022-11-18
                                                    • 2021-07-29
                                                    相关资源
                                                    最近更新 更多