npm 对等依赖意外失败
Posted
技术标签:
【中文标题】npm 对等依赖意外失败【英文标题】:npm peer-dependency failing unexpectedly 【发布时间】:2014-08-08 00:26:51 【问题描述】:我正试图找出一个对等依赖问题,我觉得一切都很好......
我的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
???
【问题讨论】:
【参考方案1】:这里的原因是0.10.2
实际上并不满足^0.6.1
,因为0.X.X
版本是一个特殊的semver类别的不稳定版本。从0.1.X
移动到0.2.X
表示重大更改,因此它们不兼容。来自semver docs:
^0.1.3 := >=0.1.3-0
要解决此问题,您可以删除对 watchify
的依赖,或将其设置为 0.6.X
发布行中的某个内容,例如:
, "devDependencies" :
"gulp-watchify" : "^0.2.0"
, "watchify" : "^0.6.4"
【讨论】:
gah,我讨厌人们决定多次对同一事物具有多种含义。谢谢你:) 是的,我想大多数人都不知道这一点(包括那些开发项目和使用 0.X 版本的人)。但是一旦你知道它,在早期开发中使用它就很好了。真的有稳定产品的人应该切换到1.X及以上。【参考方案2】:我记得这是不久前版本不兼容的问题。这是一个具有类似依赖关系问题的堆栈,其答案应该有助于找出您的依赖关系在哪里中断。当然它是用于 grunt 依赖项:
grunt-dependencies
【讨论】:
以上是关于npm 对等依赖意外失败的主要内容,如果未能解决你的问题,请参考以下文章