【问题标题】: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 有未满足的对等依赖关系......”

标签: yarnpkg


【解决方案1】:

什么是对等依赖

Here 是关于依赖类型的一些有用的读物​​,here 是关于对等依赖的信息,但总结一下:

依赖性:您的项目需要运行的库/包。
对等依赖性:用于指示您的项目将挂钩的库/包。

vue-loadervue-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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 2019-12-12
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多