问题
在webpack
工程中安装eslint-loader时报错:
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: webpack@1.0.0
npm ERR! Found: eslint@8.14.0
npm ERR! dev eslint@"^8.14.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer eslint@"^6.0.0 || ^7.0.0" from eslint-loader@4.0.2
npm ERR! node_modules/eslint-loader
npm ERR! dev eslint-loader@"*" 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.
npm ERR!
npm ERR! See C:\Users\Administrator\AppData\Local\npm-cache\eresolve-report.txt for a full report.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Administrator\AppData\Local\npm-cache\_logs\2022-04-30T13_03_24_569Z-debug-0.log
原因
ERESOLVE无法解析依赖关系树
,应该是npm版本过高导致的,@7.0.0和@8.0.0都出出现这个问题,@6.0.0则不会。
@7.0.0版本后默认安装peerDependencies,它会检查版本modules之间的版本冲突问题,如果发生冲突,则终止安装。
解决方法
以我需要安装的eslint-loader为例:
npm i --legacy-peer-deps eslint-loader
--legacy-peer-deps
的作用是忽略同一个module不同版本的问题,使同一个module的不同版本可以在项目中共存。
–legacy-peer-deps 作用
ERESOLVE unable to resolve dependency tree