另一个“未满足的对等依赖性”问题

Gar*_*ryO 7 firebase yarnpkg

尽管阅读了许多 SO 问题和文档,但我仍然不明白这一点。所以如果这真的是一个重复,请随时指出我可以解释它的任何地方。

使用纱线将 firebase 添加到我的 Vue.js 项目后,我得到了很多:

warning "firebase > @firebase/database@0.3.12" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/firestore@1.0.4" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/functions@0.3.7" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/messaging@0.3.11" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/storage@0.2.8" has unmet peer dependency "@firebase/app-types@0.x".
warning "firebase > @firebase/auth > @firebase/auth-types@0.5.2" has unmet peer dependency "@firebase/app-types@0.x".
Run Code Online (Sandbox Code Playgroud)

我已经安装了 @firebase/app-types@0.3.4 作为依赖项(列在我的 yarn.lock 中,但不在 package.json 中)。我可以通过手动解决这些错误,yarn add @firebase/app-types但我不明白为什么我需要这样做——我从来没有直接在我的应用程序中从 @firebase/app-types 调用任何东西。如果 firebase 依赖于它,并且它已经安装,为什么会出现此错误?我想我真的不明白未满足的“对等依赖”的真正含义。这真的是 firebase (@5.8.4) 本身的问题吗?

我已经通读了https://yarnpkg.com/lang/en/docs/dependency-types/,它说“对等依赖项是一种特殊类型的依赖项,只有在您发布自己的包时才会出现。” 但显然它正在为我而来,尽管没有发布我自己的包——我正在开发一个应用程序。我很感激关于这个话题的任何线索!

Lee*_*ley 5

“对等依赖”最好理解为插件与其添加功能的软件之间的软依赖链接。

如果每个插件都指定了对主软件的硬依赖,那么您将陷入版本控制地狱(比现在更糟糕)。

“对等依赖”允许 Firebase 插件(例如)通过命名对等依赖来暗示它使用哪个版本的 Firebase。

之所以如此称呼它们,是因为双方都不是这种关系的“所有者”,这是一种共生关系,具有额外功能的包只能与有限范围的“主机”包版本一起使用。

我可以通过手动执行 yarn add @firebase/app-types 来解决这些错误,但我不明白为什么我需要这样做——我从来没有直接在我的应用程序中调用 @firebase/app-types 中的任何内容。

因为“对等依赖”是一个提示,没有任何东西会为您安装这些依赖项,它们更像是建议。不幸的是,您需要知道是否需要那个东西,以及该警告是否有意义。

您可能是此错误https://github.com/yarnpkg/yarn/issues/4850的受害者,该错误引用了非 TypeScript 包中app-types需要该包的问题。

您的帖子中没有包含语言标签,因此无法知道您使用的是 JavaScript 还是 TypeScript,但如果您使用的是 TypeScript,您可能应该将该包添加为开发依赖项。

这就是对等依赖的含义,工具无法确定您是否需要那个东西,并且没有满足所有依赖项可选(对等)依赖可能会破坏某些东西,因此[warning].

您可能需要阅读https://github.com/firebase/firebase-js-sdk/issues/1207#issuecomment-424804228并注意,对此没有黑白分明的答案,这似乎非常主观。