npm install -g less does not work: EACCES: permission denied
node.jsNpmTerminalnode.js Problem Overview
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
└─┬ less@2.5.3
├─┬ errno@0.1.4
│ └── prr@0.0.0
├── image-size@0.3.5
├── mime@1.3.4
├─┬ promise@6.1.0
│ └── asap@1.0.0
└─┬ source-map@0.4.4
└── amdefine@1.0.0
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!
node.js Solutions
Solution 1 - node.js
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 :)
Solution 2 - node.js
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
Solution 3 - node.js
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
Solution 4 - node.js
Solution 5 - node.js
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
Solution 6 - node.js
For my mac environment
sudo chown -R $USER /usr/local/lib/node_modules
solve the issue
Solution 7 - node.js
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
Solution 8 - node.js
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.
And go to terminal and run npm install -g @ionic/cli
It has helped me.
Solution 9 - node.js
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
Solution 10 - node.js
sudo chown -R $USER /usr/local/lib/node_modules This command will work
Solution 11 - node.js
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
Solution 12 - node.js
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
Solution 13 - node.js
In linux make sure getting all authority with:
sudo su
Solution 14 - node.js
Another option is to download and install a new version using an installer.