我是否需要在package.json中添加旧的依赖项?

时间:2018-02-20 09:44:21

标签: node.js npm

在我的app项目中,我在0.13.1版本中使用了npm包graphql。和版本1.1.9中的apollo-cache-inmemory

正在运行npm install会向我发出警告

npm WARN apollo-cache-inmemory@1.1.9 requires a peer of graphql@0.11.7 || ^0.12.0 but none is installed. You must install peer dependencies yourself.

所以我安装的graphql更新,然后是apollo-cache-inmemory所需的版本。

这只是一个例子,我不明白如何处理这种情况。

当然我可以忽略这个警告 - 因为一切正常 - 但我想了解这个问题,在最好的情况下我会消除这些警告...

3 个答案:

答案 0 :(得分:0)

这里的问题是,你的graphql版本(0.13.1)不符合apollo-cache-inmemory(^0.12.0)设置的对等依赖性要求。 apollo-cache-inmemory中的对等依赖性声明通常指定所需的依赖性,该依赖性不包括在包依赖性中,但必须由包的用户提供。对等依赖项与兼容版本范围一起指定。

你在这里警告的原因是,"主要零"版本的处理方式与#34;普通版本"不同。以1.0.0开头。具有主要零版本的插入符说明符与具有普通版本的波形符说明符的行为相同,即^0.12.0仅匹配0.13.0下面的所有内容(有关说明,请参阅here

不幸的是,摆脱警告的唯一方法是,(1)使用"兼容" graphql版本(即0.12.X),(2)让apollo-cache-inmemory项目引用更新(例如^0.13.0)或(3)让graphql将其版本更改为以{{开头的标准版本1}}。

由于(2)和(3)不太可能发生,你可以做(​​1):)

答案 1 :(得分:0)

这是由apollo-cache-in-memory@1.1.9peerDependency上指定graphql@0.11.7 || ^0.12.0引起的:

# In a terminal session
λ npm show apollo-cache-inmemory@1.1.9 .peerDependencies.graphql
0.11.7 || ^0.12.0
版本范围0.13.1不涵盖

0.11.7 || ^0.12.0,您发现的警告会被发出。

话虽如此,graphqlapollo-cache-in-memory之间可能没有实际的互操作问题。对等依赖范围仅告诉我们作者测试的graphql版本。

有两种方法可以摆脱这种警告:

  1. apollo打开公告,将graphql peerDependency更新为以下内容,并更新到后续版本

    0.11.7 || ^0.12.0 || ^0.13.0
    
  2. graphql降级为兼容的版本范围,例如graphql@0.12

答案 2 :(得分:0)

我不太确定它是否正确和安全,但是将node_modules中每个“问题”依赖项的package.json中的对等版本更改为当前版本可以帮助您摆脱所有这些错误而没有任何麻烦。例如,我遇到以下npm警告相同的问题:

npm WARN react-dom@16.8.1 requires a peer of react@^16.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN react-ellipsis-text@1.1.0 requires a peer of react-dom@^15.4.1 but none is installed. You must install peer dependencies yourself.
npm WARN react-pose@4.0.7 requires a peer of react@^16.3.2 but none is installed. You must install peer dependencies yourself.
npm WARN react-redux@6.0.1 requires a peer of react@^16.4.0-0 but none is installed. You must install peer dependencies yourself.

安装最新版本的React并没有帮助。因此,我只编辑了react-dom,react-省略号,react-pose和react-redux模块的package.json,并将所需的React版本更改为16.4.0:

"peerDependencies": {
  "react": "^16.4.0",
  "react-dom": "^16.8.1"
},

所有警告现在都消失了。 希望对您有所帮助。