问题
While posting this question I figured out the answer, but I'll post both here in case it helps someone else, and perhaps someone can help with the why of what happened.
When I run:
sudo npm install -g grunt
the last part of it says:
/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
As you can see in the above, I am on node 0.8.19 and npm 1.2.9 (the latest that comes down from ppa:chris-lea on Ubuntu 12.10).
Other things I tried:
- Did the same on a fresh Ubuntu install. No errors. The script output looks the same until those last few error lines.
- Ran "sudo npm cache clean" and tried again. No luck.
- Ran "npm list" and there was nothing else listed
回答1:
My mistake was not appending the -g on the npm list command.
npm list -g
Once I did that, I saw my list of globally installed modules (e.g. bower, jshint, mocha), and at the very end:
npm ERR! peer invalid: flatiron@0.3.0 /usr/lib/node_modules/jitsu/node_modules/flatiron
npm ERR! not ok code 0
Then I ran this command to see which ones were using flatiron:
npm list -g flatiron
In this case it was jitsu, a module I'm not using anymore. I ran
sudo npm uninstall -g jitsu
sudo npm uninstall -g grunt
And then ran the original command again. Note for anyone coming later to this question: The correct module for reinstalling grunt command-line globally after the release of 0.4 is now grunt-cli
, NOT grunt
like when I asked the original question.
If I actually wanted to keep jitsu I could have updated it instead of uninstalling it (thanks @BenAtkin):
npm install -g jitsu
And then run the original command again. See this blog post about peerDependency being added in node 0.8.19 for more background.
回答2:
If you don't mind keeping jitsu installed, you can just upgrade jitsu and this should work.
npm install -g jitsu
npm install -g grunt-cli
来源:https://stackoverflow.com/questions/14885084/npm-peerdependency-issue-with-grunt-and-flatiron-peer