Su npm install: rifiuto non gestito Errore: EACCES: autorizzazione negata


271

Sono riuscito a corrompere la mia npminstallazione e ogni volta che provo a installare i pacchetti utilizzando npm install, ricevo messaggi di errore in questo modo:

Errore di rifiuto non gestito: EACCES: autorizzazione negata, aprire '/Users/marknorgate/.npm/_cacache/tmp/a449402d'

Ho provato a reinstallare node & npm e ho anche provato a spostare la mia cache npm altrove usando queste istruzioni ma nulla funziona.

Come posso farlo funzionare?

Risposte:


924

Ripristina la proprietà delle cartelle relative agli npm dell'utente, all'utente corrente, in questo modo:

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

10
Questo ha funzionato per me dopo aver provato 4-5 altre cose che non hanno funzionato: 1) --unsafe-perm, 2) upgrade npm, 3) restart, 4) running with sudo, etc etc
Alex York

2
Lo stesso di @AlexYork per me. Ho visto il mio utente e gruppo già come proprietario di quei due, ma immagino che una o due sottodirectory avessero proprietari diversi. Grazie!
Vedran,

1
Questo ha funzionato per me :), prima ancora che stavo provando questo docs.npmjs.com/… . Non riesco a capire se è lo stesso problema o diverso.
nim118,

1
Sembra che, a un certo punto nel mio errore nel nodo, una di quelle directory della cache sia stata creata con la rootproprietà. Questo ha risolto tutto. Grazie!
Lonnon Foster,

2
questo ha funzionato per me, grazie! Ho provato a reinstallare npm con un gestore versione nodo consigliato da npm ma non ha funzionato!
Winnie Phan,


42

Questo succede se la prima volta che esegui NPM è con sudo, ad esempio quando provi a fare un'installazione npm -g.

Le cartelle della cache devono essere di proprietà dell'utente corrente, non di root.

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

Questo darà la proprietà alle cartelle sopra quando si esegue con normali autorizzazioni utente (non come sudo).

Vale anche la pena notare che non dovresti installare pacchetti globali usando SUDO. Se riscontri problemi con le autorizzazioni, vale la pena cambiare la tua directory globale. I documenti raccomandano:

mkdir ~/.npm-global

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

Quindi aggiorna il tuo PERCORSO ovunque tu lo definisca (~ / .profile ecc.)

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

Dovrai quindi assicurarti che la variabile PATH env sia impostata (riavvio del terminale o usando il comando source)

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


3
Votare questo per la chiara spiegazione del perché :)
lnoogn,

Sì. Ciò ha risolto il problema per me quando la "soluzione corretta" sopra non lo ha fatto.
John Smith,

Tutte queste cose dovrebbero essere sottratte da npm, ma invece dobbiamo affrontarle manualmente. Penseresti che sarebbe una priorità per i manutentori riparare cose del genere, ma cosa ne so. Grazie per aver spiegato perché dobbiamo eseguire questi comandi!
YungGun,


9

La risposta sopra non ha funzionato per me. Prova a eseguire il comando con --unsafe-perm.

per esempio

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

Questo sembra risolvere il problema.


@JenLim l'hai risolto o no?
Junaid Farooq,

Ho risolto il problema eseguendo quanto segue nel terminale: npm cache clear - force.
Aspyn Lim,


2

basta creare cartelle _cache/tmpsotto .npmmanualmente in posizione /Users/marknorgate/.npm/_cacache/tmped eseguire il comando con accesso di amministratore


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

Questo è stato quello che ha funzionato per me



1

Basta fare sudo npm cache clean --force --unsafe-perme npm iandrà normalmente.


1

cambiare proprietà

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

ha funzionato per come ho installato il pacchetto usando sudo


1

Prova a usare questo: dalla riga di comando, nella tua home directory, crea una directory per installazioni globali:

mkdir ~/.npm-global

Configurare npm per utilizzare il nuovo percorso della directory:

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

Nel tuo editor di testo preferito, apri o crea un file ~ / .profile e aggiungi questa riga:

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

Sulla riga di comando, aggiorna le variabili di sistema:

source ~/.profile

Ora usa npm install dovrebbe funzionare.


0

puoi provare il seguente comando per expo:

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


0

Esegui semplicemente sul terminale: sudo chown -R $(whoami) ~/.npm

Questo ha funzionato per me !!


-1

Questo funziona per me:

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

Non ho usato il -gperché sono l'unico utente. Ho usato un MacBook Air.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.