En la instalación de npm: rechazo no controlado Error: EACCES: permiso denegado

271

Me las he arreglado para dañar mi npminstalación, y cada vez que intento instalar paquetes usando npm install, recibo mensajes de error en estas líneas:

Error de rechazo no controlado: EACCES: permiso denegado, abra '/Users/marknorgate/.npm/_cacache/tmp/a449402d'

Intenté reinstalar node & npm, y también intenté reubicar mi caché npm en otro lugar usando estas instrucciones, pero nada funciona.

¿Cómo puedo hacer que funcione?

serlingpa
fuente

Respuestas:

925

Restaure la propiedad de las carpetas relacionadas con npm del usuario, para el usuario actual, de esta manera:

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
SrAxi
fuente
10
Esto funcionó para mí después de haber intentado 4-5 otras cosas que no funcionaron: 1) --unsafe-perm, 2) actualizar npm, 3) reiniciar, 4) correr con sudo, etc. etc.
Alex York
2
Lo mismo que @AlexYork para mí. Ya vi a mi usuario y grupo como el propietario de esos dos, pero supongo que uno o dos subdirectorios tenían diferentes propietarios. ¡Gracias!
Vedran
1
Esto funcionó para mí :), antes de eso estaba probando esto docs.npmjs.com/… . No puedo entender si es un mismo problema o diferente.
nim118
1
Parece que, en algún momento de mi agitación con el nodo, uno de esos directorios de caché se creó con rootpropiedad. Esto solucionó todo. ¡Gracias!
Lonnon Foster
2
esto funcionó para mí, gracias! Traté de reinstalar npm con un administrador de versiones de nodo que recomendó npm pero no funcionó.
Winnie Phan
67

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

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

Osama Rashid
fuente
42

Esto sucede si la primera vez que ejecuta NPM es con sudo, por ejemplo, cuando intenta hacer una instalación npm -g.

Las carpetas de caché deben ser propiedad del usuario actual, no root.

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

Esto otorgará la propiedad de las carpetas anteriores cuando se ejecute con permisos de usuario normales (no como sudo).

También vale la pena señalar que no debería instalar paquetes globales con SUDO. Si tiene problemas con los permisos, vale la pena cambiar su directorio global. Los documentos recomiendan:

mkdir ~/.npm-global

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

Luego, actualice su RUTA en cualquier lugar que defina eso (~ / .profile, etc.)

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

Luego deberá asegurarse de que la variable PATH env esté configurada (reiniciando la terminal o usando el comando fuente)

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

Ryu Kent
fuente
3
Votando por la explicación clara de por qué :)
lnoogn
Sip. Esto resolvió el problema para mí cuando la "solución correcta" anterior no lo hizo.
John Smith
Todo esto debería ser abstraído por npm, pero en su lugar tenemos que tratarlo manualmente. Uno pensaría que sería de alta prioridad que los encargados de la reparación arreglen cosas como esta, pero qué sé yo. ¡Gracias por explicar por qué necesitamos hacer estos comandos!
YungGun
11
sudo npm cache clean --force --unsafe-perm

y luego npm voy normalmente

Mwangi Gituathi
fuente
9

La respuesta anterior no funcionó para mí. Solo intenta ejecutar tu comando con --unsafe-perm.

p.ej

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

Esto parece resolver el problema.

Junaid Farooq
fuente
@JenLim, ¿lo has resuelto o no?
Junaid Farooq
Resolví el problema ejecutando lo siguiente en la terminal: npm cache clear - force.
Aspyn Lim
2

simplemente cree carpetas _cache/tmpdebajo .npmmanualmente en la ubicación /Users/marknorgate/.npm/_cacache/tmpy ejecute su comando con acceso de administrador

Anshuman Jaiswal
fuente
2
sudo npm install --unsafe-perm=true --allow-root

Este fue el que me funcionó

BliteKnight
fuente
1

Simplemente hazlo sudo npm cache clean --force --unsafe-perme npm iirá normalmente.

James Okunlade
fuente
1

cambiar de dueño

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

trabajé para cuando instalé el paquete usando sudo

Tecnólogo
fuente
1

Intente usar esto: en la línea de comando, en su directorio de inicio, cree un directorio para instalaciones globales:

mkdir ~/.npm-global

Configure npm para usar la nueva ruta del directorio:

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

En su editor de texto preferido, abra o cree un archivo ~ / .profile y agregue esta línea:

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

En la línea de comando, actualice las variables de su sistema:

source ~/.profile

Ahora use npm install, debería funcionar.

AyushKatiyar
fuente
0

puedes probar el siguiente comando para expo:

sudo chown -R $USER:$GROUP ~/.expo
cesur bağcı
fuente
0

Simplemente ejecute en la terminal: sudo chown -R $(whoami) ~/.npm

¡Esto funcionó para mí!

Akshita Agarwal
fuente
-1

Esta funciona para mí:

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

No utilicé el -gporque soy el único usuario. Usé una MacBook Air.

Arly Ordóñez
fuente