安装带有纱线的软件包时,“未满足对等依赖性”是啥意思?
Posted
技术标签:
【中文标题】安装带有纱线的软件包时,“未满足对等依赖性”是啥意思?【英文标题】:What does 'has unmet peer dependency' mean when installing a package with yarn?安装带有纱线的软件包时,“未满足对等依赖性”是什么意思? 【发布时间】:2018-04-06 07:19:57 【问题描述】:我全新安装了yarn
(通过npm install yarn -g
)并尝试使用
yarn add vue-loader babel-loader style-loader css-loader file-loader webpack
我在安装过程中收到了一些警告,例如
warning "vue-loader@13.3.0" has unmet peer dependency "vue-template-compiler@^2.0.0".
这究竟是什么意思,特别是:为什么yarn
不自行安装这些依赖项?(如果需要)
关于同一主题的sister question(关于npm
)会产生一些答案,建议i)更新npm
ii)删除node_modules
,因为npm
中有一个关于处理依赖关系的错误。
yarn
中此类警告的状态如何? 这真的是一个警告(= 我可以丢弃的东西)吗? 我不能丢弃它们(webpack
构建失败)并且必须手动安装它们。同时,安装了很多依赖项,所以我不明白为什么错过了一些(虽然它们可以手动安装)
【问题讨论】:
我不是母语人士,我刚刚在笔记本电脑上观察到“X has unmet peer dependency Y”消息。在我用谷歌搜索这个 SO 问题之前,我认为这句话的意思是“[安装] X 导致 Y 的依赖关系不被满足”,而它们的意思是“X 有未满足的对等依赖关系......” 可能重复:***.com/questions/42361942/… 【参考方案1】:什么是对等依赖
Here 是关于依赖类型的一些有用的读物,here 是关于对等依赖的信息,但总结一下:
依赖性:您的项目需要运行的库/包。对等依赖性:用于指示您的项目将挂钩的库/包。
包vue-loader
对vue-template-compiler
有对等依赖 - vue-loader
充当vue-template-compiler
的插件
为什么不默认安装
对等依赖项自动安装到npm@3(yarn 已跟进)。由于经常令人困惑的行为,这被停止了。例如,安装另一个具有冲突需求的插件会导致错误。
我们还将改变 npm@3 中 peerDependencies 的行为。我们将不再自动下载对等依赖项。相反,如果尚未安装对等依赖项,我们会警告您。这需要您自己手动解决 peerDependency 冲突,但从长远来看,这应该会降低您最终遇到包依赖项的棘手问题的可能性。 [2015 年 2 月 13 日]
更新
根据here npm@7 现在安装对等依赖项。 有关此决定背后的动机,请参阅here
【讨论】:
这只是一个警告,但通常如果不满足依赖项,执行将失败。那么为什么似乎可以忽略这个警告呢? 我该怎么办?我正在使用纱线。我应该忽略这个还是手动安装?您只提到了 npm 的更新,而不是关于 yarn。问题是关于纱线的。 与纱线无关!问题是纱线而不是 npm。 @JeanPaul 2 个可能的原因。首先,如果对等依赖项是可选的。其次,如果对等依赖项是其他已安装包的依赖项,但未在 package.json 中列出,即使包可用,您仍会看到警告。【参考方案2】:运行 yarn install --check-files
或仅运行 yarn install
可以解决问题并安装缺少的依赖项。
也可以选择明确添加到您的package.json
。
参考https://github.com/yarnpkg/yarn/issues/4594#issuecomment-763475899
【讨论】:
以上是关于安装带有纱线的软件包时,“未满足对等依赖性”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
the hash for the file is not present in the specified catalog file,是啥意