xslibx
xslibx

Reputation: 4349

npm install -g less does not work: EACCES: permission denied

I'm trying to set up less on phpstorm so I can compile .less files to .css on save. I have installed node.js and the next step (according to this https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html) is running this command in the terminal

npm install -g less

However when I do this I get these errors

☁  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  └─┬ [email protected]
    └── [email protected]

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
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!     /Users/brentscholl/npm-debug.log

I'm a complete noob here and not sure what to do next. Any help would be very appreciated!

Upvotes: 275

Views: 267044

Answers (14)

ibrahimgb
ibrahimgb

Reputation: 1081

I have got the same problem. updating npm was not working for me either so I just decided to reinstall it.

what worked for me is uninstall node from my system using.

sudo apt-get remove nodejs    
sudo apt-get remove npm

end then reinstall it after update.

sudo apt-get update
sudo apt install npm

Upvotes: 1

Vitalii Andrusishyn
Vitalii Andrusishyn

Reputation: 4162

You can use this command with the root password to add permission for writing for node_module folder:

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

Upvotes: 4

Harshit Gangwar
Harshit Gangwar

Reputation: 553

Try installing with sudo. I had a similar problem installing npm package globally. The problem occurs because current use does not have write permissions for making changes in directory.

Didn't work

npm i -g vsce 

Worked

sudo npm i -g vsce

Upvotes: 0

Oybek Toshmatov
Oybek Toshmatov

Reputation: 427

You can try with sudo, like the following

sudo npm install -g less

If it does not work, you can refer to this link https://ionicframework.com/docs/developing/tips#resolving-permission-errors

Upvotes: 1

Apurva Aggarwal
Apurva Aggarwal

Reputation: 297

sudo chown -R $USER /usr/local/lib/node_modules This command will work

Upvotes: 1

Gohar SUltan
Gohar SUltan

Reputation: 75

I have tried all the suggested solutions but nothing worked.

I am using macOS Catalina 10.15.3

Go to /usr/local/

Select bin folder > Get Info

Add your user to Sharing & Permissions. Read & Write Permissions. enter image description here

And go to terminal and run npm install -g @ionic/cli

It has helped me.

Upvotes: 2

user3393929
user3393929

Reputation: 172

enter image description hereUse sudo -i to switch to $root, then execute npm install -g xxxx

Upvotes: 15

ABC123
ABC123

Reputation: 1065

Another option is to download and install a new version using an installer.

https://nodejs.org/en/download/

Upvotes: -3

Geshe
Geshe

Reputation: 759

In linux make sure getting all authority with:

sudo su

Upvotes: -2

Asadut Zaman
Asadut Zaman

Reputation: 313

For my mac environment

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

solve the issue

Upvotes: 11

Roderick Jonsson
Roderick Jonsson

Reputation: 1151

Mac OS X Answer

You don't have write access to the node_modules directory

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

Add your User to the directory with write access

  1. Open folder containing node_modules

    open /usr/local/lib/

  2. Do a cmd+I on the node_modules folder to open the permission dialog
  3. Add your user to have read and write access in the sharing and permissions section enter image description here

Upvotes: 34

Vincent Gerris
Vincent Gerris

Reputation: 7508

Using sudo is not recommended. It may give you permission issue later. While the above works, I am not a fan of changing folders owned by root to be writable for users, although it may only be an issue with multiple users. To work around that, you could use a group, with 'npm users' but that is also more administrative overhead. See here for the options to deal with permissions from the documentation: https://docs.npmjs.com/getting-started/fixing-npm-permissions

I would go for option 2:

To minimize the chance of permissions errors, you can configure npm to use a different directory. In this example, it will be a hidden directory on your home folder.

Make a directory for global installations:

 mkdir ~/.npm-global

Configure npm to use the new directory path:

 npm config set prefix '~/.npm-global'

Open or create a ~/.profile file and add this line:

 export PATH=~/.npm-global/bin:$PATH

Back on the command line, update your system variables:

 source ~/.profile

Test: Download a package globally without using sudo.

npm install -g jshint

If still show permission error run (mac os):

sudo chown -R $USER ~/.npm-global   

This works with the default ubuntu install of:

sudo apt-get install nodejs npm

I recommend nvm if you want more flexibility in managing versions: https://github.com/creationix/nvm

On MacOS use brew, it should work without sudo out of the box if you're on a recent npm version. Enjoy :)

Upvotes: 505

gazdagergo
gazdagergo

Reputation: 6691

Reinstall node and npm with Node Version Manger (as per written in npm documentation) to avoid permission errors:

In OSX:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

or follow this article:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

Windows users should install nvm-windows. For further help how to install nvm refer the nvm readme.

Then choose for example:

nvm install 8.0.0
nvm use 8.0

Now you can give another try:

npm install -g less

Upvotes: 12

Vagner Rodrigues
Vagner Rodrigues

Reputation: 1455

Run these commands in a terminal window (note: DON'T replace the $USER part... thats a linux command to get your user!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules

Upvotes: 133

Related Questions