修复安装 NPM 包的上游依赖冲突

Posted

技术标签:

【中文标题】修复安装 NPM 包的上游依赖冲突【英文标题】:Fix the upstream dependency conflict installing NPM packages 【发布时间】:2021-03-04 06:10:32 【问题描述】:

尝试 npm install vue-mapbox mapbox-gl 我得到一个依赖树错误。

我正在使用 Vuetify 运行 Nuxt s-s-r,并且在运行此安装并收到此错误之前没有安装任何与 Mapbox 相关的东西。

38 error code ERESOLVE
39 error ERESOLVE unable to resolve dependency tree
40 error
41 error While resolving: [1mexample[22m@[1m1.0.0[22m
41 error Found: [1mmapbox-gl[22m@[1m1.13.0[22m[2m[22m
41 error [2mnode_modules/mapbox-gl[22m
41 error   [1mmapbox-gl[22m@"[1m^1.13.0[22m" from the root project
41 error
41 error Could not resolve dependency:
41 error [35mpeer[39m [1mmapbox-gl[22m@"[1m^0.53.0[22m" from [1mvue-mapbox[22m@[1m0.4.1[22m[2m[22m
41 error [2mnode_modules/vue-mapbox[22m
41 error   [1mvue-mapbox[22m@"[1m*[22m" from the root project
41 error
41 error Fix the upstream dependency conflict, or retry
41 error this command with --force, or --legacy-peer-deps
41 error to accept an incorrect (and potentially broken) dependency resolution.
41 error
41 error See /Users/user/.npm/eresolve-report.txt for a full report.
42 verbose exit 1

解决这个上游依赖冲突的正确方法是什么?

【问题讨论】:

【参考方案1】:

看起来这是最新版本的 npm (v7) 中的 Peer Dependencies 存在问题,该版本仍然是 beta 版本。尝试使用npm install --legacy-peer-deps 了解详细信息,请查看https://blog.npmjs.org/post/626173315965468672/npm-v7-series-beta-release-and-semver-major

【讨论】:

那个标志是什么? npm: When to use --force and --legacy-peer-deps 可能会有帮助【参考方案2】:

npm install 之后使用--legacy-peer-deps。例如,如果你想安装镭,使用:

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

【讨论】:

【参考方案3】:

有两种方式:

    使用npm install --legacy-peer-deps 安装,如果这不起作用,请使用

    强制方法。在 npm install 旁边添加 --force:npm install --force

【讨论】:

【参考方案4】:

直到 npm 版本 7.19.1 仍然有同样的问题,在 升级到版本 7.20.3 使用命令 npm install -g npm@latestnpm audit fix 所有 pkg​​s 修复没有错误。

【讨论】:

以上是关于修复安装 NPM 包的上游依赖冲突的主要内容,如果未能解决你的问题,请参考以下文章

解决npm下载包的时候发生的依赖冲突

冲突的对等依赖关系:webpack@4.46.0 npm ERR!节点模块/webpack

Gradle 查看包的依赖关系

解决 Firebase 子规范 pod 依赖冲突的问题

npm:何时使用 `--force` 和 `--legacy-peer-deps`

maven依赖包冲突解决思路