49

Note: Due to security concerns, please don't use the marked solution but instead the highest voted one!


original question:

I am trying to install monaca with this command.

npm install -g monaca 

But right after getting these errors:

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules 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! { Error: EACCES: permission denied, access '/usr/local/lib/node_modules' npm ERR! stack: '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' } 

Any idea how to solve this problem? Thank you

1

7 Answers 7

106

add following lines to ~/.bashrc after installing npm:

npm set prefix ~/.npm PATH="$HOME/.npm/bin:$PATH" PATH="./node_modules/.bin:$PATH" 

Execute following line after changes:

source ~/.bashrc 

and as mentioned by @contemplator avoid using sudo

Sign up to request clarification or add additional context in comments.

3 Comments

NOTE: Do not use sudo If using Zsh add the lines above to ~/.zshrc after installing npm. Execute following line after changes: source ~/.zshrc
The more zshrc-like way of doing this is npm set prefix ~/.npm; path+=$HOME/.npm/bin; path+=./node_modules/.bin (using path+= rather than appending the existing path to each line like in bash)
what about fish?
5

This command will change the owner (chown) recursively (-R) for the current user in the specified directory

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

1 Comment

If you added an explanation to your answer, the answer would be greatly improved
3

To all the warnings telling not to use sudo above, I'd add the following solution that worked pretty well for me while installing n, node version manager

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

This was taken from here: https://poopcode.com/missing-write-access-to-usr-local-lib-node-modules/

PS: for my specific use-case I also needed to run this one afterwards

sudo chown -R $USER /usr/local/bin/

2 Comments

It seems odd that the preferred way to fix this is to make a subpath of /usr not be owned by root. Does npm not have an equivalent of pip's --user flag?
Actually, it does have such a mechanism--something like npm config set prefix '~/.npm-global'. See stackoverflow.com/questions/33725639/…
0

Well, I used --save-dev and installed it not globally or using -g, the main problem occurs while you want it to write on default node_modules folder.

It solved my problem after 4 hours of checking multiple issues.

I even suggest you to use the npm init and make a package.json for a better dependency checking and then run npm install afterward. this video helps you for this https://www.youtube.com/watch?v=rTsz09zRuTU

Comments

0

Please dont use sudo.

I don't know the context of your environment, but I got the error on a server where Plesk was running.

Maybe the following command will help (via SSH) to check the permissions:

plesk repair fs example.com.

Manual: https://docs.plesk.com/en-US/12.5/administrator-guide/plesk-administration/plesk-repair-utility/plesk-repair-utility-file-system.74668/

In my case the node_modules folder was copied via FTP and therefore it had the wrong corrections. If necessary, you can remove this and install it via Plesk using the Npm installation button.

Info: The button only appears if the document contains a package.json with information.

Comments

-5

it is very simple you can use

sudo npm install -g kazam

or

su -

then

npm install -g kazam

explenation

su - 

makes you as root ,who have permission to read , write and delete in all users click here for the screen shot showing the error and the solution in the update of npm

this is for ubuntu i don't know is it work for other os 

Comments

-19

An inadvisable way to fix the issue would be to use sudo:

sudo npm install -g monaca 

However it would be better to find a way around this without using sudo.

npm install -g less does not work

4 Comments

please give a full fledged permission based final fix not just sudo things
don't use sudo with npm, try this
You literally just said it was inadvisable - so don't be part of the problem and give that advice.
this will ofcourse work for once but npm will not work as it should be