npm peer与grunt和flatiron peer的依赖问题
在发布这个问题的时候,我想出了答案,但是我会在这里发帖以防别人帮忙,也许有人可以帮忙解释发生了什么事情。
当我运行:
sudo npm install -g grunt
它的最后部分说:
/usr/bin/grunt -> /usr/lib/node_modules/grunt/bin/grunt npm ERR! peerinvalid The package flatiron does not satisfy its siblings' peerDependencies requirements! npm ERR! peerinvalid Peer flatiron-cli-config@0.1.3 wants flatiron@~0.1.9 npm ERR! peerinvalid Peer flatiron-cli-users@0.1.1 wants flatiron@~0.1.9 npm ERR! System Linux 3.5.0-23-generic npm ERR! command "nodejs" "/usr/bin/npm" "install" "-g" "grunt" npm ERR! cwd /home/explunit npm ERR! node -v v0.8.19 npm ERR! npm -v 1.2.9 npm ERR! code EPEERINVALID npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /home/explunit/npm-debug.log npm ERR! not ok code 0
正如你在上面看到的,我在节点0.8.19和npm 1.2.9(在Ubuntu 12.10上来自ppa:chris-lea的最新版本)。
其他的事情我尝试过
- 在新鲜的Ubuntu安装上做了同样的事情。 没有错误。 脚本输出看起来是相同的,直到最后几个错误行。
- 冉“sudo npmcaching干净”,并再次尝试。 没有运气。
- 冉“npm列表”,没有其他列出
我的错误是不在npm list命令上附加-g。
npm list -g
一旦我这样做了,我就看到了我的全球安装模块列表(例如bower,jshint,mocha),最后:
npm ERR! peer invalid: flatiron@0.3.0 /usr/lib/node_modules/jitsu/node_modules/flatiron npm ERR! not ok code 0
然后我运行这个命令,看看哪些是使用熨斗:
npm list -g flatiron
在这种情况下,它是jitsu,我不再使用的模块。 我跑了
sudo npm uninstall -g jitsu sudo npm uninstall -g grunt
然后再运行原始命令。 任何人都会注意到这个问题:在0.4版发布之后,重新安装grunt命令行的正确模块现在是grunt-cli
,而不是像当我提出原始问题时那样grunt
。
如果我真的想保持jitsu我可以更新它,而不是卸载它(谢谢@BenAtkin):
npm install -g jitsu
然后再次运行原始命令。 看到这个博客文章关于peerDependency被添加到节点0.8.19更多的背景。
如果你不介意保持jitsu安装,你可以升级jitsu,这应该工作。
npm install -g jitsu npm install -g grunt-cli