npm peer-dependency意外失败

时间:2014-06-17 20:59:15

标签: node.js npm

我试图找出同伴依赖问题,一切看起来都不错......

我的package.json有:

, "devDependencies" : {
    "gulp-watchify" : "^0.2.0"
    ,    "watchify" : "^0.10.2"
}

而且gulp-watchify/package.json有:

"peerDependencies": {
    "watchify": "^0.6.1"
},

0.10.2满足^0.6.1,不是吗?那么为什么npm会抱怨:

npm ERR! peerinvalid The package watchify does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer gulp-watchify@0.2.0 wants watchify@^0.6.1

npm ERR! System Darwin 14.0.0
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! cwd <path redacted>
npm ERR! node -v v0.11.12
npm ERR! npm -v 1.4.3
npm ERR! code EPEERINVALID
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     <path redacted>/npm-debug.log
npm ERR! not ok code 0

???

2 个答案:

答案 0 :(得分:4)

这里的原因是0.10.2实际上并不满足^0.6.1,因为0.X.X版本是不稳定版本的特殊semver类别。从0.1.X移至0.2.X表示发生了重大变化,因此它们不兼容。来自semver docs

  

^ 0.1.3:=&gt; = 0.1.3-0 <0.2.0-0&#34;与0.1.3&#34;相容。 0.x.x版本是特殊的:第一个非零组件表示可能会发生重大更改,这意味着插入符操作符匹配从指定版本开始具有相同的第一个非零组件的任何版本。

要解决此问题,您可以删除对watchify的依赖关系,也可以将其设置为0.6.X版本行的内容,例如:

, "devDependencies" : {
    "gulp-watchify" : "^0.2.0"
    ,    "watchify" : "^0.6.4"
}

答案 1 :(得分:0)

我记得这是版本不兼容的问题。这是一个具有类似依赖性问题的堆栈,其答案应该有助于找出依赖关系破坏的位置。当然这是为了grunt依赖:

grunt-dependencies