Errore: EACCES: autorizzazione negata


99

Corro npm installare lodash ma getta di errore: EACCES: permesso negato errore. So che è un problema di autorizzazione, ma per quanto ne so, l'autorizzazione sudo non è richiesta per l'installazione del modulo del nodo localmente. Se lo eseguo con sudo, viene installato nella cartella ~ / node_modules. drwxrwxr-x è l'autorizzazione del file della cartella esistente. Non riesco a capire cosa potrebbe essere andato storto.

Di seguito è riportato il messaggio di errore.

npm ERR! tar.unpack untar error /home/rupesh/.npm/lodash/4.13.1/package.tgz
npm ERR! Linux 3.13.0-88-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "lodash"
npm ERR! node v4.3.1
npm ERR! npm  v2.14.12
npm ERR! path /home/rupesh/node_modules/lodash
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR!      'FSReqWrap.oncomplete (fs.js:82:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/rupesh/Desktop/es6/npm-debug.log

è il proprietario della cartella node_modulesprincipale?
AJS

La cartella node_module non è stata ancora creata all'interno della cartella in cui intendo installare lodash.
xruptronics

hai eseguito l'installazione di npm nella tua directory / home / rupesh / o in un'altra directory?
AJS

il percorso della cartella in cui eseguo l'installazione di npm è ~ / Desktop / es6
xruptronics

qual è l'output di ls -l ~/Desktop | grep es6assicurarsi di essere il proprietario della directory es6
AJS

Risposte:


79

Questo comando risolve il problema. Ha funzionato per me:

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

Per chiunque come me, mentre questo comando sembra aver funzionato al momento della scrittura, per Node v10.10.0ho ricevuto il seguente errore: "npm ERR! Can't install / var / www / project: Missing package name"
Wayne Smallman

1
I flag --unsafe-perm = true --allow-root hanno funzionato per noi utilizzando il nodo v10.15.0 per installare come utente root un'applicazione esistente in cui node-sass non avrebbe installato. Il comando esatto che abbiamo usato per installare node-sass nella directory locale cartella node_modules era # npm install --save-dev --unsafe-perm = true --allow-root node-sass @ latest
Peter Edwards

Puoi usare root per risolvere il problema (anche se questo non è raccomandato).
Chris Marotta

Sono stato in grado di farlo funzionare usando quei flag, quindi la risposta è davvero: sudo npm install -g --unsafe-perm = true --allow-root <package-name> @ <version-name>
Frank Hu MSFT

46

Ho lo stesso problema con l'installazione del server webpack a livello globale, usa i passaggi da questo URL ha risolto il mio problema, il mio lavoro per te.

I passaggi menzionati sopra Ecco: Eseguire il backup del computer prima di iniziare.

Crea una directory per installazioni globali:

1. mkdir ~/.npm-global

Configurare npm per utilizzare il nuovo percorso della directory:

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

Apri o crea un file ~ / .profile e aggiungi questa riga:

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

Torna alla riga di comando, aggiorna le variabili di sistema:

4.source ~/.profile

Test: scarica un pacchetto a livello globale senza utilizzare sudo.

npm install -g jshint

Invece dei passaggi 2-4, puoi utilizzare la variabile ENV corrispondente (ad es. Se non vuoi modificare ~ / .profile):

NPM_CONFIG_PREFIX=~/.npm-global

1
ha lavorato su Mojave. Molte grazie dopo 4-5 ore di risoluzione dei problemi, questo ha funzionato!
Johnny

11

La creazione di package.json utilizzando npm init ha risolto il mio problema.


Ma non sono sicuro del motivo per cui il file package.json è richiesto durante l'installazione del modulo del nodo poiché il file package.json non viene aggiornato o utilizzato nel mio caso perché non ho utilizzato --save o --save-dev o un comando simile.
xruptronics

questo è strano. Penso che qualcosa sia stato incasinato nella tua configurazione npm e facendo init resettarlo, comunque dovrebbe essere un mistero per sempre dato che non sono riuscito a trovare un singolo riferimento a un problema simile altrove.
AJS

Ho avuto un problema simile con npm 6.9.0 e ha funzionato anche per me.
Chris Marotta

11

Ho avuto problemi su Linux. scrissi

chown -R myUserName ./* 

nella cartella del mio progetto.


7
Molto sconsigliato. Questo tocca tutte le tue directory e rimuove i diritti di root su ognuna di esse. Se alcune cose devono essere impostate come root, questo distrugge la configurazione corrente.
Patrick Da Silva

8

Da quello che posso vedere nei tuoi log che hai pubblicato:

npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',

directory /home/rupesh/node_modules/non ha le autorizzazioni necessarie per creare la directory, quindi eseguilo chown -r rupesh:rupesh /home/rupesh/node_modules/dovrebbe risolverlo.


Facendo chown -R rupesh: rupesh / home / rupesh / node_modules / ed eseguendo npm install lodash di nuovo installato lodash nella cartella ~ / node_module.Ma questa volta non genera errori.Ma non è dove intendo installare.
xruptronics

si lo so che dovresti creare il progetto nella tua home directory invece che sul desktop. npm per qualche motivo sta installando i tuoi moduli /home/rupesh/node_modulesper qualche motivo. Comunque lavorare nella tua home directory dovrebbe essere l'ideale
AJS

Penso che ~ / Projects / es6 sia equivalente a ~ / Desktop / es6 per quanto riguarda la struttura.Quello che ho difficoltà a capire è perché node_modules non viene creato all'interno della cartella es6 e perché il modulo lodash (o qualsiasi altra cosa) non è installato al suo interno. Non avevo affrontato questo problema prima, ma cosa è andato storto oggi, è quello che voglio capire.
xruptronics

sì, ho letto i miei due commenti precedenti e ho realizzato la stupidità :), beh, mi sono guardato intorno e non sono riuscito a trovare nessun altro che avesse lo stesso problema. Il tuo codice è in grado di trovare il loadashmodulo ?.
AJS

7

Non dispone dei permessi di scrittura per others(rx). Prova con

chmod a+w <folder>

e ripeti.


2
Non chownha -run'opzione per evitare di doverlo utilizzare su ogni cartella in node_modules?
DrakaSAN

@Juanjo Salvador Non ha funzionato, genera lo stesso errore.
xruptronics

@DrakaSAN yeah, chown ha un'opzione ricorsiva.
Juanjo Salvador

6

Questo ha risolto immediatamente il mio problema: mac Mojave 10.14.6 - PhpStorm.

Errore di rifiuto non gestito: EACCES: autorizzazione negata, mkdir '/Users/myname/.npm/_cacache/index-v5/fb/5a'

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

Post originale: https://stackoverflow.com/a/50639828


4

FWIW ho avuto gli stessi sintomi, ma con un pacchetto diverso. La creazione package.jsone l'esecuzione npm initha NON risolvere il mio problema.

Su questo sistema, apparentemente venivano create nuove cartelle in questa posizione con i permessi di root. Durante npm install, vengono create nuove cartelle. Ciò ha causato il fallimento parziale dell'installazione di npm, anche con sudo.

La soluzione era eseguire npm install appin una posizione diversa senza umask di root.


4

Prova a dare tutte le autorizzazioni alla cartella del tuo progetto con il comando seguente

sudo chmod -R 777 /yourProjectDirectoryName

Corri con

sudo npm install lodash

È una soluzione jr
Pablo Papalardo

Potresti anche non aver bisogno di 777. Per me il problema era solo che i # erano troppo bassi. (775 ha risolto il problema.)
Andrew

"L'impostazione delle autorizzazioni 777 per un file o una directory significa che sarà leggibile, scrivibile ed eseguibile da tutti gli utenti e potrebbe rappresentare un enorme rischio per la sicurezza." - linuxize.com/post/what-does-chmod-777-mean
MillerC

4

Un problema correlato:

Ho sprecato 3 ore in diversi giorni.

Su una macchina AWS EC2, di seguito ha funzionato:

sudo chown -R $(whoami) /home/ubuntu/.cache
sudo chown -R $(whoami) /home/ubuntu/.config
sudo chown -R $(whoami) /home/ubuntu/.local
sudo chown -R $(whoami) /home/ubuntu/.npm
sudo chown -R $(whoami) /home/ubuntu/.pm2

Spero che aiuti.


3

Ho risolto questo problema modificando l'autorizzazione della mia directory npm. Sono andato alla directory globale di npm per me era a

/home/<user-name>

Sono andato in questa directory inserendo questo comando

cd /home/<user-name>

e quindi modificato l'autorizzazione della cartella .npm immettendo questo comando.

sudo chmod -R 777 ".npm"

Ha funzionato come un fascino per me. Ma c'è un difetto di sicurezza con questo, cioè la tua directory globale dei pacchetti è accessibile a tutti i livelli.


Perché consentire a tutto il mondo di accedere a questa particolare cartella?
egdavid

2

Prima installazione senza -g (globale) su root. Dopo aver provato a usare -g (globale) ha funzionato per me.


Lavorato!! Su Mac ho spostato la mia cartella del codice nella mia cartella principale: HardDrive /, e "npm install" ha funzionato perfettamente. Quindi ho spostato la cartella del codice nella posizione in cui volevo all'interno di HardDrive / users / myUserName / Projects / code, ho eseguito di nuovo "npm install" e questa volta ha funzionato.
Josh

2

LUBUNTU 19.10 / Stesso problema in esecuzione: $ npm start

dump: Errore: EACCES: autorizzazione negata, apri "/home/simon/xxx/pagebuilder/resources/scripts/registration/node_modules/.cache/@babel/register/.babel.7.4.0.development.json" in Object. fs.openSync (fs.js: 646: 18) su Object.fs.writeFileSync (fs.js: 1299: 33) al salvataggio (/ home / simon / xxx / pagebuilder / resources / scripts / registration / node_modules / @ babel / register / lib / cache.js: 52: 15) su _combinedTickCallback (internal / process / next_tick.js: 132: 7) su process._tickCallback (internal / process / next_tick.js: 181: 9) su Function.Module.runMain (module.js: 696: 11) in Object. (/home/simon/xxxx/pagebuilder/resources/scripts/registration/node_modules/@babel/node/lib/_babel-node.js:234:23) su Module._compile (module.js: 653: 30) su Object .Module._extensions..js (module.js: 664: 10) su Module.load (module.js: 566: 32)

Sembra che il mio utente predefinito (amministratore) non avesse diritti sulle directory del modulo nodo.

Questo ha risolto per me!

$ sudo chmod a+w node_modules -R ## from project root


2

Prova a usare questo: sulla riga di comando, nella tua home directory, crea una directory per le 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

Prova l'installazione del pacchetto a livello globale senza usare sudo, spero che aiuti


1

Ecco la soluzione per gli utenti GNU / Linux (Debian) (sostituisci USERNAME con il tuo nome utente ):

sudo chown -R $USER:$(id -gn $USER) /home/USERNAME/.config

0

Rimuovi la cartella dist e questo risolve il mio problema !!


0

Su Windows si è scoperto che la porta era già utilizzata da IIS.

L'arresto di IIS (clic destro, esci) ha risolto il problema.


0

Basta cambiare il proprietario della node_modulesdirectory globale in modo che sia il tuo utente:

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

0

Ho provato la maggior parte di questi suggerimenti ma nessuno di loro ha funzionato. Poi ho corso npm clean-installe ha risolto i miei problemi.


0

node consiglia di eseguire quanto segue:

 sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config

Se esegui

npm config

Vedrai qualcosa di simile

                   npm update check failed                   
             Try running with sudo or get access             
            to the local update config store via             
 sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config 

Ha funzionato per me.


-3

Esegui questi comandi e il problema verrà risolto!

sudo chmod -R 777 /usr/local/bin
sudo chmod -R 777 /usr/local/lib/node_modules

Per /usr/locale tutte le sottodirectory i permessi dovrebbero essere rwxr-xr-xe di proprietà di root. Gli utenti del sistema possono leggere ed eseguire all'interno di questa struttura di directory, ma non possono modificare, creare file. Detto questo, la tua risposta suggerisce di concedere le autorizzazioni a tutti. E, senza descrivere come e cosa sarà influenzato, o perché il problema verrà risolto.
Kuliraj
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.