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