ryan4888 ryan4888 - 12 days ago 10
Node.js Question

npm install not working, throwing errors

I am trying to install yo and a few other packages in nodejs, however I keep getting errors. I am new to node so I am a little lost.
I am running Mac OS X 10.10.3. The command I am using is

sudo npm install --global yo


Doing this gives me the following errors.

> spawn-sync@1.0.13 postinstall /usr/local/lib/node_modules/yo/node_modules/cross-spawn/node_modules/spawn-sync
> node postinstall

shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
node.js:720
var cwd = process.cwd();
^
Error: EACCES, permission denied
at Error (native)
at Function.startup.resolveArgv0 (node.js:720:23)
at startup (node.js:63:13)
at node.js:814:3
npm ERR! Darwin 14.3.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "--global" "yo"
npm ERR! node v0.12.7
npm ERR! npm v2.11.3
npm ERR! code ELIFECYCLE

npm ERR! spawn-sync@1.0.13 postinstall: `node postinstall`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the spawn-sync@1.0.13 postinstall script 'node postinstall'.
npm ERR! This is most likely a problem with the spawn-sync package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node postinstall
npm ERR! You can get their info via:
npm ERR! npm owner ls spawn-sync
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! /Users/XXXXXXX/npm-debug.log

Answer

In general, you should not be using sudo to install node modules. Instead, use sudo to fix your folder permissions to allow you to do global npm installs.

Take ownership of the .npm directory with

sudo chown -R $(whoami) ~/.npm

And write permission for the node_modules directory with

sudo chown -R $USER /usr/local/lib/node_modules

Then try to run your npm install command again without sudo.