执行npm i时出现ERESOLVE依赖解析错误求助
npm install 遇到 ERESOLVE 依赖冲突问题
执行npm i时出现以下错误:
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: ngx-webstorage@2.0.1 npm ERR! Found: @angular/core@6.1.0 npm ERR! node_modules/@angular/core npm ERR! @angular/core@"6.1.0" from the root project npm ERR! peer @angular/core@"6.1.0" from @angular/common@6.1.0 npm ERR! node_modules/@angular/common npm ERR! @angular/common@"6.1.0" from the root project npm ERR! peer @angular/common@"6.1.0" from @angular/forms@6.1.0 npm ERR! node_modules/@angular/forms npm ERR! @angular/forms@"6.1.0" from the root project npm ERR! 1 more (@ng-bootstrap/ng-bootstrap) npm ERR! 9 more (@angular/platform-browser, ...) npm ERR! 13 more (@angular/forms, @angular/platform-browser, ...) npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer @angular/core@"^5.0.0" from ngx-webstorage@2.0.1 npm ERR! node_modules/ngx-webstorage npm ERR! ngx-webstorage@"2.0.1" from the root project npm ERR! npm ERR! Conflicting peer dependency: @angular/core@5.2.11 npm ERR! node_modules/@angular/core npm ERR! peer @angular/core@"^5.0.0" from ngx-webstorage@2.0.1 npm ERR! node_modules/ngx-webstorage npm ERR! ngx-webstorage@"2.0.1" from the root project
已尝试删除node_modules目录后重新执行npm i,也重装过NodeJS,问题仍未解决。此前该命令一直运行正常。
项目的package.json内容如下:
{ "dependencies": { "@angular/common": "6.1.0", "@angular/compiler": "6.1.0", "@angular/core": "6.1.0", "@angular/forms": "6.1.0", "@angular/platform-browser": "6.1.0", "@angular/platform-browser-dynamic": "6.1.0", "@angular/router": "6.1.0", "@fortawesome/angular-fontawesome": "^0.3.0", "@fortawesome/fontawesome-svg-core": "1.2.2", "@fortawesome/free-solid-svg-icons": "5.2.0", "@ng-bootstrap/ng-bootstrap": "3.0.0", "bootstrap": "4.1.3", "core-js": "2.5.7", "moment": "2.22.2", "ng-jhipster": "0.5.4", "ngx-cookie": "2.0.1", "ngx-infinite-scroll": "0.5.1", "ngx-webstorage": "2.0.1", "reflect-metadata": "0.1.12", "rxjs": "6.1.0", "rxjs-compat": "6.1.0", "swagger-ui": "2.2.10", "tslib": "1.9.3", "zone.js": "0.8.26" }, "devDependencies": { "@angular/cli": "6.1.2", "@angular/compiler-cli": "6.1.0", "@ngtools/webpack": "6.0.0", "@types/jest": "22.2.3", "@types/node": "9.4.7", "angular-router-loader": "0.8.5", "angular2-template-loader": "0.6.2", "browser-sync": "^2.27.7", "browser-sync-webpack-plugin": "2.2.2", "cache-loader": "1.2.2", "codelyzer": "4.2.1", "copy-webpack-plugin": "4.5.1", "css-loader": "0.28.10", "exports-loader": "0.7.0", "extract-text-webpack-plugin": "4.0.0-beta.0", "file-loader": "1.1.11", "fork-ts-checker-webpack-plugin": "0.4.1", "friendly-errors-webpack-plugin": "1.7.0", "generator-jhipster": "5.3.0", "html-loader": "0.5.5", "html-webpack-plugin": "3.2.0", "husky": "0.14.3", "jest": "22.4.3", "jest-junit": "5.1.0", "jest-preset-angular": "5.2.2", "jest-sonar-reporter": "2.0.0", "lint-staged": "7.0.0", "merge-jsons-webpack-plugin": "1.0.14", "moment-locales-webpack-plugin": "1.0.5", "prettier": "1.11.1", "proxy-middleware": "0.15.0", "raw-loader": "0.5.1", "rimraf": "2.6.1", "simple-progress-webpack-plugin": "1.1.2", "style-loader": "0.20.3", "tapable": "1.0.0", "terser-webpack-plugin": "1.0.0", "thread-loader": "1.1.5", "to-string-loader": "1.1.5", "ts-loader": "4.0.1", "tslint": "5.9.1", "tslint-config-prettier": "1.9.0", "tslint-loader": "3.6.0", "typescript": "2.7.2", "webpack": "4.8.0", "webpack-cli": "2.1.3", "webpack-dev-server": "3.1.5", "webpack-merge": "4.1.2", "webpack-notifier": "^1.15.0", "webpack-visualizer-plugin": "0.1.11", "workbox-webpack-plugin": "3.2.0", "write-file-webpack-plugin": "4.2.0", "xml2js": "0.4.19" }, "engines": { "node": ">=8.9.0" }, "lint-staged": { "src/**/*.{ts,css,scss}": [ "prettier --write", "git add" ] }, "scripts": { "precommit": "lint-staged", "prettier:format": "npm prettier --write 'src/**/*.{ts,css,scss}'", "lint": "tslint --project tsconfig.json -e 'node_modules/**'", "lint:fix": "npm run lint -- --fix", "ngc": "ngc -p tsconfig-aot.json", "cleanup": "rimraf target/{aot,www}", "clean-www": "rimraf target//www/app/{src,target/}", "start": "npm run webpack:dev", "serve": "npm run start", "build": "npm run webpack:prod", "test": "npm run lint && jest --coverage --logHeapUsage -w=2 --config src/test/javascript/jest.conf.js", "test:watch": "npm test -- --watch --clearCache", "webpack:dev": "npm run webpack-dev-server -- --config webpack/webpack.dev.js --inline --hot --port=9060 --watch-content-base --env.stats=minimal", "webpack:dev-verbose": "npm run webpack-dev-server -- --config webpack/webpack.dev.js --inline --hot --port=9060 --watch-content-base --profile --progress --env.stats=normal", "webpack:build:main": "npm run webpack -- --config webpack/webpack.dev.js --env.stats=normal", "webpack:build": "npm run cleanup && npm run webpack:build:main", "webpack:prod:main": "npm run webpack -- --config webpack/webpack.prod.js --profile", "webpack:prod": "npm run cleanup && npm run webpack:prod:main && npm run clean-www", "webpack:test": "npm run test", "webpack-dev-server": "node --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js", "webpack": "node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js" }, "jestSonar": { "reportPath": "target/test-results/jest", "reportFile": "TESTS-results-sonar.xml" } }
问题原因
错误核心是依赖版本不兼容:ngx-webstorage@2.0.1的peer依赖要求@angular/core@^5.0.0,但当前项目使用的是@angular/core@6.1.0,两者版本冲突。另外npm从v7开始默认启用严格的peer依赖检查,这也是之前能正常安装、现在报错的原因(重装NodeJS可能带来了更高版本的npm)。
解决方案
方案1:升级ngx-webstorage到兼容Angular 6的版本
修改package.json中ngx-webstorage的版本为^3.0.0(该版本专门适配Angular 6):
"ngx-webstorage": "^3.0.0"
然后执行npm i重新安装依赖。
方案2:使用legacy-peer-deps参数忽略冲突
如果暂时不想升级依赖,可以执行以下命令绕过peer依赖检查:
npm i --legacy-peer-deps
该参数会让npm回到v6及以前的peer依赖处理逻辑,忽略版本冲突。
内容的提问来源于stack exchange,提问作者spovmon
相关产品推荐
相关产品推荐

