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?

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

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


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


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


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.


@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


2
sudo npm install --unsafe-perm=true --allow-root

Este fue el que me funcionó



1

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


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


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.


0

puedes probar el siguiente comando para expo:

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


0

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

¡Esto funcionó para mí!


-1

Esta funciona para mí:

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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.