28

在发布这个问题时,我想出了答案,但我会在这里发布,以防它帮助其他人,也许有人可以帮助了解发生的原因

当我运行时:

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 npm cache clean”并再次尝试。没运气。
  • 跑“npm list”,没有其他列出
4

2 回答 2

57

我的错误是没有在 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

然后我运行这个命令来查看哪些正在使用 flatiron:

npm list -g flatiron

在这种情况下,它是 jitsu,一个我不再使用的模块。我跑了

sudo npm uninstall -g jitsu
sudo npm uninstall -g grunt

然后再次运行原始命令。请注意稍后提出此问题的任何人:在0.4 发布后全局重新安装 grunt 命令行的正确模块是 now ,不像我问原始问题时那样。grunt-cligrunt

如果我真的想保留 jitsu,我可以更新它而不是卸载它(感谢@BenAtkin):

npm install -g jitsu

然后再次运行原始命令。有关更多背景信息,请参阅有关在节点 0.8.19 中添加 peerDependency 的博客文章。

于 2013-02-14T22:17:02.217 回答
9

如果您不介意安装 jitsu,您可以升级 jitsu,这应该可以。

npm install -g jitsu
npm install -g grunt-cli
于 2013-02-20T06:50:03.687 回答