另一个“未满足的同伴依赖性”问题

时间:2019-02-25 16:00:42

标签: firebase yarnpkg

尽管阅读了很多SO问题和文档,但我还是不明白这一点。因此,如果这真的是一个重复,请随时将我指向可以解释它的任何地方。

使用yarn将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".

我确实已经安装了@ 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/,其中说:“对等依赖项是一种特殊类型的依赖项,只有在发布自己的程序包时才会出现。”但是很明显,尽管我没有发布自己的软件包,但对我来说却是正确的-我正在开发一个应用程序。我希望对这个话题有何启发!

1 个答案:

答案 0 :(得分:1)

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

如果每个插件都指定了对主软件的严格依赖关系,那么您将陷入版本混乱(比现在更糟)。

“对等依赖项”允许Firebase插件(例如)通过命名对等依赖项来提示其使用的Firebase版本。

之所以这样称呼他们,是因为双方都不是关系的“所有者”,这是一种共生关系,具有额外功能的程序包只能在“主机”程序包的有限范围内正常运行。

  

我可以通过手动添加@ 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并注意,对此没有黑白答案,这似乎是主观的。

相关问题