ChatGPT解决这个技术问题 Extra ChatGPT

On npm install: Unhandled rejection Error: EACCES: permission denied

I have managed to corrupt my npm install, and whenever I try to install packages using npm install, I receive error messages along these lines:

Unhandled rejection Error: EACCES: permission denied, open '/Users/marknorgate/.npm/_cacache/tmp/a449402d'

I have tried reinstalling node & npm, and I have also tried to relocate my npm cache elsewhere using these instructions but nothing works.

How can I get it working?


j
jorisw

Restore ownership of the user's npm related folders, to the current user, like this:

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

This worked for me after I tried 4-5 other things which didn't work: 1) --unsafe-perm, 2) upgrading npm, 3) restarting, 4) running with sudo, etc etc.
Same as @AlexYork for me. I saw my user and group already as the owner of those two but I guess a subdirectory or two had different owner(s). Thanks!
This worked for me :), before that I was trying this docs.npmjs.com/…. Not able to understand if its a same problem or different.
Looks like, at some point in my flailing with node, one of those cache directories was created with root ownership. This fixed up all up. Thank you!
this worked for me, thank you! I tried to reinstall npm with a node version manager which recommended by npm but it didn't work!
O
Osama Rashid

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

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


R
Ryu Kent

This happens if the first time you run NPM it's with sudo, for example when trying to do an npm install -g.

The cache folders need to be owned by the current user, not root.

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

This will give ownership to the above folders when running with normal user permissions (not as sudo).

It's also worth noting that you shouldn't be installing global packages using SUDO. If you do run into issues with permissions, it's worth changing your global directory. The docs recommend:

mkdir ~/.npm-global

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

Then updating your PATH in wherever you define that (~/.profile etc.)

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

You'll then need to make sure the PATH env variable is set (restarting terminal or using the source command)

https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally


Voting this up for the clear explanation as to why :)
Yup. This solved the problem for me when the "correct solution" above didn't.
All this stuff should be abstracted away by npm, but instead we have to deal with it manually. You'd think it would be high priority for the maintainers to fix things like this, but what do I know. Thanks for explaining why we need to do these commands!
s
slfan
sudo npm cache clean --force --unsafe-perm

and then npm i goes normally


J
Junaid Farooq

Above answer didn't work for me. Just try to run your command with --unsafe-perm.

e.g

npm install -g node@latest --unsafe-perm

This seems to solve the problem.


@JenLim have you sorted out it or not?
I solved the problem by running the following in terminal: npm cache clear — force.
N
Novocaine

If none of suggestions in answers worked out, try the following command: npm cache clear --force. It worked for me.

I found it at https://github.com/vuejs/vue-cli/issues/1809.


N
Nick

change ownership

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config 

worked for as i installed package using sudo


A
Anshuman Jaiswal

just create folders _cache/tmp under .npm manually at location /Users/marknorgate/.npm/_cacache/tmp and run your command with administrator access


B
BliteKnight
sudo npm install --unsafe-perm=true --allow-root

This was the one that worked for me


J
James Okunlade

Simply do sudo npm cache clean --force --unsafe-perm and npm i will go normally.


A
AyushKatiyar

Try using this: On the command line, in your home directory, create a directory for global installations:

mkdir ~/.npm-global

Configure npm to use the new directory path:

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

In your preferred text editor, open or create a ~/.profile file and add this line:

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

On the command line, update your system variables:

source ~/.profile

Now use npm install it should work.


c
cesur bağcı

you can try following command for expo :

sudo chown -R $USER:$GROUP ~/.expo

s
sachinsuthariya

as per npm community

sudo npm cache clean --force --unsafe-perm

and then npm install goes normally.

source: npm community-unhandled-rejection-error-eacces-permission-denied


A
Akshita Agarwal

Simply run on terminal : sudo chown -R $(whoami) ~/.npm

This worked for me !!


P
Paul Roub

This one works for me:

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

I did not use the -g because I am the only user. I used a MacBook Air.


a
aishwarya talapuru

sudo npm install -g @angular/cli

use this. it worked for me