需要同一个对等体的多个版本

时间:2019-01-21 10:31:55

标签: node.js reactjs npm

当我在当前的React项目上运行npm i时,收到关于react peerDependency的以下警告:

npm WARN react-tap-event-plugin@3.0.3 requires a peer of react@^16.0.0-0 < 16.4.0 but none is installed. You must install peer dependencies yourself.
npm WARN react-paginate@4.4.4 requires a peer of react@^15.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN formsy-react@0.19.5 requires a peer of react@^0.14.0 || ^15.0.0 but none is installed. You must install peer dependencies yourself.

在我的package.json中,我正在使用最新版本的react:

"react": "^16.7.0"

我是node和npm的新手。我想知道安装npm peerDependencies的良好做法是什么:

1。)如果在package.json中已经指定了更新版本,可以忽略较低版本的警告。

2。)按照 https://lexi-lambda.github.io/blog/2016/08/24/understanding-the-npm-dependency-model/https://github.com/npm/npm/issues/6565

npm提供了依赖关系隔离,并且peerDepencies需要手动安装,因此我应该安装所有3个版本的react,但我担心这会破坏导入语句。

3。)如果以上两个都不是,那么我应该在package.json中使用哪个版本。 P.S。我的package.json中还有更多依赖项,可能还需要最新版本。

2 个答案:

答案 0 :(得分:5)

进一步了解Danyal的答案,您可以升级Forms-react并删除react-tap-event-plugin:

  1. 将formy-react更新为最新版本 :(在撰写本文时为1.1.5),此软件包的最新版本支持react ^ 16。
  2. react-tap-event-plugin 支持React版本直至版本16.4。您可以在此处选择以下几种方式:
    1. 降级反应:降级到16.4会删除所有警告,但会限制您将来的升级能力
    2. 删除react-tap-event-plugin :根据文档https://www.npmjs.com/package/react-tap-event-plugin。实际上,由于对更高版本的浏览器进行了修复,该模块实际上已被弃用。检查blog post以获得信息。
    3. fork react-tap-event-plugin :我自己不会这样做,但是您可以派发插件并使用更新后的react peerDependency自己发布。

答案 1 :(得分:2)

对等依赖项意味着一个软件包适用于特定版本的依赖项,并且如果超出指定版本,则该软件包将无法按预期工作。

在您的情况下,react-tap-event-plugin@3.0.3需要的React版本低于16.4.0,react-paginate@4.4.4需要的任何React 15版本都与formsy-react@0.19.5相同。

您需要从React 16.7.0降级,但是如果您使用的是16.7.0功能,这可能会破坏您的应用程序,或者您可以删除软件包并使用另一个软件包,或者从头开始编写软件包的逻辑。

提示:在实际考虑为项目使用软件包之前,请务必确保先阅读npm网站上的软件包依赖项。