UPDATE:
Apparently, it is bad practice to use sudo to install node modules. Instead, changing folder permissions will solve this issue.
See the answer here: https://stackoverflow.com/a/31546496/2859315
ORIGINAL POST:
Currently, I have installed Node (version v0.12.7) and NPM. I am trying to install the mean-cli package from NPM.
I am following the installation instructions found here: https://github.com/linnovate/mean#installation
Also, I was taking a MEAN Stack development course on Udemy. Here is the lecture:
https://www.udemy.com/mean-stack-for-beginners/#/lecture/2697540
So far, I have installed both prerequisite packages, Gulp and Bower:
$ npm install -g gulp
// and bower
$ npm install -g bower
Firstly, I tried installing by using npm install -g mean-cli but that threw permission errors without using sudo. Then, even using sudo would not work.
Secondly, I tried updating and reinstalling node and NPM. Still have the same issue.
When I type the command sudo npm install -g mean-cli,
I get this response:
> mean-cli#0.10.14 preinstall /usr/local/lib/node_modules/mean-cli
> node ./scripts/preinstall
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.4.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "-g" "mean-cli"
npm ERR! node v0.12.7
npm ERR! npm v2.11.3
npm ERR! code ELIFECYCLE
npm ERR! mean-cli#0.10.14 preinstall: `node ./scripts/preinstall`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the mean-cli#0.10.14 preinstall script 'node ./scripts/preinstall'.
npm ERR! This is most likely a problem with the mean-cli package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node ./scripts/preinstall
npm ERR! You can get their info via:
npm ERR! npm owner ls mean-cli
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /Library/WebServer/Documents/NodeJS/mean/npm-debug.log
It seems like the problem lies here: Failed at the mean-cli#0.10.14 preinstall script 'node, but I am not sure about how to debug this further.
Any insight or helpful information is appreciated! Thanks!
Apparently, it is bad practice to use sudo to install node modules. Instead, changing folder permissions will solve this issue.
See the answer here: https://stackoverflow.com/a/31546496/2859315
To reclaim ownership of the /usr/local use the command below
Sudo chown –r $USER /usr/local
Related
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
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.
From your Reddit post, I know that
sudo npm cache clean fixed the issue for you.
Figured someone should answer here so anyone else looking to solve this can find it.
Running the following commands should solve the problem.
sudo npm cache clean
sudo npm install -g yo
I am pretty new to using terminal and installing gulp, but I am running through a few errors. Errors keep popping up and I am not sure why. My goal for right now is to install gulp globally, but not sure if any old files are interfering. Maybe a clean out and reinstall would work? Error is below. Thanks!
pm ERR! tar.unpack untar error /Users/.npm/gulp/3.9.0/package.tgz
npm ERR! Darwin 14.1.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "-g" "gulp"
npm ERR! node v0.12.4
npm ERR! npm v2.10.1
npm ERR! path /usr/local/lib/node_modules/gulp
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/gulp'
npm ERR! at Error (native)
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/gulp']
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/gulp',
npm ERR! fstream_type: 'Directory',
npm ERR! fstream_path: '/usr/local/lib/node_modules/gulp',
npm ERR! fstream_class: 'DirWriter',
npm ERR! fstream_stack:
npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR! 'FSReqWrap.oncomplete (fs.js:95:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! Please include the following file with any support request:
npm ERR! /usr/local/bin/npm-debug.log
Other answers are bypassing these issues by the use of sudo or su root. I personally don't recommend this. The reason it works is because on OSX the global npm module directory has stricter permissions. Running your commands with root privileges just to get around permissions issues is likely only going to cause you headaches down the road and open you up to security vulnerabilities. At the very least it's going to cause you to have to use sudo constantly when trying to do routine node/npm things. The safer way would be to change the permissions of just that directory. However, even that can sometimes cause nightmares.
My alternative recommendation to the other suggestions here is to use nvm.
You can install it with curl (you have this already, just paste the below command):
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
Or you can use Homebrew if you have that installed:
brew install nvm
Once installed, you'll be able to easily install any node or iojs version that you want.
nvm install node
The above command will install the latest version of node. The nice part is that all your node/iojs installations are managed within ~/.nvm/, meaning they are inside your home directory where you'll always have full access permissions and won't ever need to use sudo.
You dont have the rights to write un /sur/local
Either you run sudo npm install -g gulp or give your user the rights to write in /usr/local
Today I have installed the latest version of node through nvm on Linux Mint (Ubuntu 13.10).
Thanks to nvm, I now don't have to use the sudo command with npm - which has solved problems with a few packages.
$ node -v
v0.10.29
$ npm -v
1.4.14
However when entering this command:
npm install browserify --save-dev
I now get the following error:
npm ERR! Error: EACCES, symlink '../browserify/bin/cmd.js'
npm ERR! { [Error: EACCES, symlink '../browserify/bin/cmd.js'] errno: 3, code: 'EACCES', path: '../browserify/bin/cmd.js' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Linux 3.11.0-12-generic
npm ERR! command "/home/dave/.nvm/v0.10.29/bin/node" "/home/dave/.nvm/v0.10.29/bin/npm" "install" "browserify" "--save-dev"
npm ERR! cwd /var/www/100mondays-l4.2/frontend
npm ERR! node -v v0.10.29
npm ERR! npm -v 1.4.14
npm ERR! path ../browserify/bin/cmd.js
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, symlink '../browserify/bin/cmd.js'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /var/www/100mondays-l4.2/frontend/npm-debug.log
npm ERR! not ok code 0
When I try to comply with the error advice:
$ sudo npm install browserify --save-dev
sudo: npm: command not found
I have been able to install other modules with npm - globally and locally - with no issues. So my guess is the error is to do with symlinks? My local site is in /var/www/ but my node/npm installation is in ~/.nvm/, and my home folder doesn't follow symlinks? However I'm not a server/Linux expert so could be off the mark.
This works fine:
npm install browserify -g
Any help greatly received.
Adding browserify to my package.json manually and using npm install from the project root solved my issue. Not really sure why.
I am currently having trouble installing the grunt command line interface, i get a whole lot of errors on the log when I try and install it using instructions off a tutorial website. I just added node.js from a package I downloaded off their website. Any help would be appreciated?
I used the following command as detailed on the roots WordPress instructions page
npm install -g grunt-cli
and this error message was returned
npm ERR! Error: Attempt to unlock grunt-cli, which hasn't been locked
npm ERR! at unlock (/usr/local/lib/node_modules/npm/lib/utils/locker.js:44:11)
npm ERR! at cb (/usr/local/lib/node_modules/npm/lib/cache/add-local.js:30:5)
npm ERR! at /usr/local/lib/node_modules/npm/lib/cache/add-local.js:47:20
npm ERR! at /usr/local/lib/node_modules/npm/lib/utils/locker.js:30:7
npm ERR! at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
npm ERR! at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
npm ERR! at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
npm ERR! at Object.oncomplete (fs.js:107:15)
npm ERR! If you need help, you may report this entire log,
npm ERR! including the npm and node versions, at:
npm ERR! http://github.com/npm/npm/issues
npm ERR! System Darwin 13.2.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "grunt-cli"
npm ERR! cwd /Users/jonbeech
npm ERR! node -v v0.10.29
npm ERR! npm -v 1.4.14
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/jonbeech/npm-debug.log
npm ERR! not ok code 0
➜ ~
Run sudo npm install -g grunt-cli you need sudo privileges when installing something globally, or remove the -g switch.
Try to avoid needing sudo with npm, there are likely going to be other permissions errors. Here is what I did after installing npm with sudo:
Uninstall NPM: sudo npm uninstall npm -g
Install NVM so that I can install npm without needing sudo (similar to RVM), see: https://github.com/creationix/nvm#installation
Install latest npm: nvm install stable
Clear caches npm cache clear
and then everything worked
We're trying to install Titaniums ACS via command line using
sudo npm -g install acs
however it keeps failing and we get the below error
npm http GET https://registry.npmjs.org/bindings
> bson#0.0.4 install /usr/local/lib/node_modules/acs/node_modules/connect-mongo/node_modules/mongodb/node_modules/bson
> node install.js
sh: node: command not found
npm ERR! Error: ENOENT, lstat '/usr/local/lib/node_modules/acs/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/WebSocketMain.swf'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-#googlegroups.com>
npm ERR! System Darwin 12.3.0
npm ERR! command "node" "/usr/local/bin/npm" "-g" "install" "acs" "--color" "false"
npm ERR! cwd /Users/titanium
npm ERR! node -v v0.8.22
npm ERR! npm -v 1.2.14
npm ERR! path /usr/local/lib/node_modules/acs/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/WebSocketMain.swf
npm ERR! fstream_path /usr/local/lib/node_modules/acs/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/WebSocketMain.swf
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:297:15)
npm ERR! bson#0.0.4 install: `node install.js`
npm ERR! `sh "-c" "node install.js"` failed with 127
npm ERR!
npm ERR! Failed at the bson#0.0.4 install script.
npm ERR! This is most likely a problem with the bson package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node install.js
npm ERR! You can get their info via:
npm ERR! npm owner ls bson
npm ERR! There is likely additional logging output above.
npm ERR! System Darwin 12.3.0
npm ERR! command "node" "/usr/local/bin/npm" "-g" "install" "acs" "--color" "false"
npm ERR! cwd /Users/titanium
npm ERR! node -v v0.8.22
npm ERR! npm -v 1.2.14
npm ERR! code ELIFECYCLE
npm http 304 https://registry.npmjs.org/qs/0.5.1
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/send/0.0.4
npm http 304 https://registry.npmjs.org/bytes/0.1.0
npm http 304 https://registry.npmjs.org/bindings
> hiredis#0.1.15 install /usr/local/lib/node_modules/acs/node_modules/socket.io/node_modules/redis/node_modules/hiredis
> node-gyp rebuild
/usr/local/lib/node_modules/npm/bin/node-gyp-bin/node-gyp: line 2: node: command not found
npm WARN optional dep failed, continuing hiredis#0.1.15
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/titanium/npm-debug.log
npm ERR! not ok code 0
iMac:~ titanium$ node-gyp
-bash: node-gyp: command not found
iMac:~ titanium$ hiredis
-bash: hiredis: command not found
iMac:~ titanium$ apt-get install homebrew
-bash: apt-get: command not found
iMac:~ titanium$ node
> echo 1
... exit
... no
...
>
(^C again to quit)
>
iMac:~ titanium$ node install.js
module.js:340
throw err;
^
Error: Cannot find module '/Users/titanium/install.js'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:245:9)
However we can type node into the terminal and it runs it fine, and loads of node functionality works perfectly.
If anybody has any insights to this issue it would be very helpful.
Thank you
Did you try clearing the npm cache?
npm cache clean
Looks like node is not in PATH for sudo user.
Either set up node for sudo like given here or run it with sudo -E option.
Don't use npm with root privileges, that is unsafe.
I would suggest you to give ownership to /usr/local to your user, to do so you could do
sudo chown -R $USER /usr/local
as adviced here by npm's author: http://howtonode.org/introduction-to-npm
I tried installing it without sudo and worked ok.
Before installing the CLI, you should decide where you want the Node Package Manager (npm) to install packages. By default npm installs into /usr/local on OS X and Linux, which requires that you run npm as root. This is not recommended. You can avoid having to run npm by doing one of the following:
Make the /usr/local directory writable by all:
sudo chmod 777 /usr/local
Set npm to install to your home directory, or another directory of your choosing by setting the npm prefix. For example, you can add the following to your .bash_profile or other initialization file:
export NPM_CONFIG_PREFIX=$HOME
Alternately, you can create a .npmrc file in your home directory with the following contents:
prefix=/path/to/home
Where /path/to/home is the path to your home directory. Setting the npm prefix to your home directory causes the npm packages to be installed to $HOME/lib/node_modules and launch scripts are installed in $HOME/bin. $HOME/bin must be in your PATH.
If you change your prefix after installing npm packages, you will have to reinstall packages. If you change the permissions on /usr/local after installing packages as root, you may need to change the ownership of the npm cache folder, as described in Troubleshooting npm Problems.
Troubleshooting npm Problems
If you experience an issue installing any of the npm packages, try the following:
Check permissions. If you originally ran npm using sudo, you may need to change the ownership of the npm cache folder.
sudo chown -R <username> ~/.npmrc
On Windows, the npm cache defaults to npm-cache in the user's home directory.
Clear the npm package cache:
npm cache clean
Remove your .npmrc file.