定制软件npm install:Could not resolve dependency:peer... 原因和解决方案

报错

npm i定制软件下载包时报以下错误

解读

定制软件上述报错日志中有个关键字眼: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获取远程资源,即使磁盘上存在本地副本也是如此。

这样的关键字,这是npm版本的依赖冲突的提示使然,
那么npm:何时使用–force和–legacy-peer-deps?

  1. –force 会无视冲突,并强制获取远端npm库资源,即使本地有资源也会覆盖掉
  2. –legacy-peer-deps:安装时忽略所有peerDependencies,忽视依赖冲突,采用npm版本4到版本6的样式去安装依赖,已有的依赖不会覆盖,。

建议用–legacy-peer-deps 比较保险一点

原因

NPM v7 预设会安装peerDependencies,默认情况下,npm install当遇到冲突的peerDependencies时将失败。以前不是那样的,这会导致某些套件出现相依性问题,所以可能会在npm install这个时候加上–legacy-peer-deps参数来解决这个问题,来了解一下这个问题。

你是在使用 NPM 的 v6 不会出现这个问题,因为默认不会自动执行安装peerDependencies套件,如果在各个版本的资料中,将夹入 v3 的各个目标套件相依的套件。

什么是 peerDependencies

我们在package.json中应该都可以看到dependencies和devDependencies该类设置相依套件的属性,分别是相依和开发相依的套件,但实际上NPM有以下5种相依到件的阶段设置:

依赖相依套件
devDependencies开发阶段套件
peerDependencies对等套件
bundledDependencies捆绑套件
可选依赖项任选套件
bundledDependencies是在发布时需要捆绑的一个套件npm pack,将相关套件在执行时的套件中使用。

optionalDependencies可选这些套件,当你安装套件时,如果该套件不存在,则跳过此套件而不会发生错误。

而peerDependencies会用在多个对等(或称当)的套件都同一个套件时,就可以通过依此属性来设置套件的相套件。

套装相依性问题

peerDependencies的立意良善,但对于一些专案来说,可能会造成一整套相依性的问题。
这个时候,npm在执行npm install的时候,可以–legacy-peer-deps自动安装peerDependencies不同的版本,因为我们可以根据自己的不同版本设置不同的版本。

也就是让 NPM v7 用旧的(v3~v6)的处理方式来安装相依套件。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发