本文主要是介绍npm install:Could not resolve dependency:peer... 原因和解决方案,长期更新npm相关错误问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
亲测可用,若有疑问请私信
前言
最近一个后台管理项目中我集成了tailwindcss框架;在公司的电脑上npm install是没问题的,到家里的电脑npm install 就报错; 报错日志如下:
# npm resolution error report
2021-05-22T14:02:27.205Z
While resolving: ymsh@1.0.0
Found: postcss@7.0.35
node_modules/postcss
postcss@"^7.0.35" from the root project
Could not resolve dependency:
peer postcss@"^8.0.0" from postcss-cli@8.3.1
node_modules/postcss-cli
postcss-cli@"^8.3.1" from the root project
Fix the upstream dependency conflict, or retry
this command with --force, or --legacy-peer-deps
to accept an incorrect (and potentially broken) dependency resolution.
Raw JSON explanation object:
{
"code": "ERESOLVE",
"current": {
"name": "postcss",
"version": "7.0.35",
"whileInstalling": {
"name": "ymsh",
"version": "1.0.0",
"path": "F:\\代码\\ymsh-shopadmin"
},
"location": "node_modules/postcss",
"dependents": [
{
"type": "prod",
"name": "postcss",
"spec": "^7.0.35",
"from": {
"location": "F:\\代码\\ymsh-shopadmin"
}
}
]
},
"edge": {
"type": "peer",
"name": "postcss",
"spec": "^8.0.0",
"error": "INVALID",
"from": {
"name": "postcss-cli",
"version": "8.3.1",
"whileInstalling": {
"name": "ymsh",
"version": "1.0.0",
"path": "F:\\代码\\ymsh-shopadmin"
},
"location": "node_modules/postcss-cli",
"dependents": [
{
"type": "prod",
"name": "postcss-cli",
"spec": "^8.3.1",
"from": {
"location": "F:\\代码\\ymsh-shopadmin"
}
}
]
}
},
"peerConflict": null,
"strictPeerDeps": false,
"force": false
}
家里的node -v 是14.16 跟公司一样,唯独是 npm 版本不一样:家里的是 npm 7.6.1
上述报错日志中有个关键字眼:this command with --force, or --legacy-peer-deps
Fix the upstream dependency conflict, or retry
this command with --force, or --legacy-peer-deps
to accept an incorrect (and potentially broken) dependency resolution.
于是我查了一下是什么意思:
辗转搜索得出这样的答案:
修复上游依赖性冲突,或使用--force或--legacy-peer-deps重试此命令,以接受不正确的(并且可能会损坏的)依赖性解析。
-f或–force参数将强制npm获取远程资源,即使磁盘上存在本地副本也是如此。
同时,用于的文档--legacy-peer-deps说:
–legacy-peer-deps:安装时忽略所有peerDependencies,其样式为npm版本4到版本6。
在新版本的npm(v7)中,默认情况下,npm install当遇到冲突的peerDependencies时将失败。以前不是那样的。
两者之间的区别如下-
--legacy-peer-deps:安装时忽略所有peerDependencies,采用npm版本4到版本6的样式。
--strict-peer-deps:遇到任何冲突的peerDependencies时,失败并中止安装过程。默认情况下,npm仅会因根项目的直接依赖关系而导致的peerDependencies冲突而崩溃。
以上是英文文献翻译过来的,是有点生硬:我简单总结一下:
在新版本的npm(v7)中,默认情况下,npm install当遇到冲突的peerDependencies时将失败。不会继续安装,并提示:
Fix the upstream dependency conflict, or retry
this command with --force, or --legacy-peer-deps
to accept an incorrect (and potentially broken) dependency resolution.
这样的关键字,这是npm版本的依赖冲突的提示使然,
那么npm:何时使用--force和--legacy-peer-deps?
--force 会无视冲突,并强制获取远端npm库资源,即使本地有资源也会覆盖掉
--legacy-peer-deps:安装时忽略所有peerDependencies,忽视依赖冲突,采用npm版本4到版本6的样式去安装依赖,已有的依赖不会覆盖,。
建议用--legacy-peer-deps 比较保险一点,反正我用了就安装成功了;
这篇关于npm install:Could not resolve dependency:peer... 原因和解决方案,长期更新npm相关错误问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!