ERESOLVE unable to resolve dependency tree
我们在有些项目中进行 npm install
操作时,会遇到报 ERESOLVE unable to resolve dependency tree
错误的情况:
$ npm install
...
$ npm ERR! code ERESOLVE
$ npm ERR! ERESOLVE unable to resolve dependency tree
这是由于高版本 npm(>= v7
) 遇到对等依赖(peerDependencies
)冲突时,会引发失败终止安装过程,并抛出上面的错误。
这时候,我们除了可以试着盘查项目依赖精心指定引发 对等依赖冲突
相关包的版本号 来解决问题,
还可以偷懒为安装命令加上 --legacy-peer-deps
参数来尝试解决问题:
$ npm install --legacy-peer-deps
该参数告诉 npm 在遇到这种对等依赖冲突时,以 legacy
(npm v4 ~ v6) 模式运行忽略所有对等依赖,你项目本地有什么版本就用什么版本。
一般情况下这能让 npm install
过程顺利完成并让项目跑起来,但也只是刚好能跑起来 - 如前面所说 --legacy-peer-deps
参数只是忽略所有对等依赖,相关依赖包或者你用到的功能是否真的能正常工作还需要观察。
随 --legacy-peer-deps
还有一个 --force
参数,它将强制 npm 忽略相关依赖的本地副本改从远程获取并放在依赖树中。
对一些小工具包的依赖使用该参数可能是个更好的选择,但对于像 Vue, React
这样的全局包要谨慎处理。