npm install -g less non funziona: EACCES: autorizzazione negata


203

Sto cercando di impostare meno su phpstorm in modo da poter compilare i file .less in .css al momento del salvataggio. Ho installato node.js e il passaggio successivo (secondo questo https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html ) sta eseguendo questo comando nel terminale

npm install -g less

Tuttavia quando lo faccio ottengo questi errori

  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
   └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
   └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
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!     /Users/brentscholl/npm-debug.log

Sono un noob completo qui e non sono sicuro di cosa fare dopo. Qualsiasi aiuto sarebbe molto apprezzato!

Risposte:


354

L'uso di sudo non è raccomandato. Potrebbe darti problemi di autorizzazione in seguito. Mentre quanto sopra funziona, non sono un fan di cambiare le cartelle di proprietà di root in modo che siano scrivibili per gli utenti, anche se potrebbe essere un problema solo con più utenti. Per ovviare a questo, è possibile utilizzare un gruppo, con "utenti npm" ma anche un sovraccarico amministrativo. Vedi qui per le opzioni per gestire le autorizzazioni dalla documentazione: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Vorrei andare per l'opzione 2:

Per ridurre al minimo la possibilità di errori di autorizzazione, è possibile configurare npm per utilizzare una directory diversa. In questo esempio, sarà una directory nascosta nella cartella principale.

Crea una directory per installazioni globali:

 mkdir ~/.npm-global

Configurare npm per utilizzare il nuovo percorso della directory:

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

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

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

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

 source ~/.profile

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

npm install -g jshint

Se mostra ancora errore di autorizzazione eseguito (mac os):

sudo chown -R $USER ~/.npm-global   

Funziona con l'installazione predefinita di Ubuntu di:

sudo apt-get install nodejs npm

Vi consiglio nvmse desiderate maggiore flessibilità nella gestione delle versioni: https://github.com/creationix/nvm

Su MacOS usa brew, dovrebbe funzionare senza sudoessere pronto se hai una npmversione recente . Godere :)


Heads up-- su Ubuntu 18.04 ho dovuto disconnettermi e riconnettermi prima che la modifica fosse applicata automaticamente anche a tutte le nuove finestre del terminale.
Alexander Nied,

Alexander, ti sei assicurato di aver usato il comando source? Ciò dovrebbe occuparsi di impostare le giuste variabili d'ambiente, non è necessario disconnettersi (ma funziona).
Vincent Gerris,

questo non ha funzionato $ npm install -g jshint npm ERR! scrivere dopo fine npm ERR! Un registro completo di questa corsa è disponibile in: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith

3
Grazie per questo "Su MacOS usa la birra"
Bijender Singh Shekhawat,

110

Esegui questi comandi in una finestra del terminale (nota: NON sostituire la parte $ USER ... questo è un comando linux per ottenere il tuo utente!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules

7
È una buona idea diventare te stesso il proprietario delle cose /usr? Cosa succede se qualcun altro vuole installare roba di nodo?
Marco

6
Ha lavorato per me su MacOS High Sierra, ho solo bisogno di uno dei tre comandi: sudo chown -R $USER /usr/local/lib/node_modules. @Mark È vero, ma ovviamente non c'è problema se hai un solo utente.
Fabian von Ellerts,

@FabianvonEllerts Bene, è ancora più facile eliminare accidentalmente i file di sistema, dal momento che non avrai più bisogno di sudo ... Seguirei le migliori pratiche anche da solo, ma ovviamente dipende da te.
Segna il

Sono con Mark, a meno che tu non abbia un utente (e anche allora) non desideri avere le sottodirectory / usr di proprietà di un utente, in tal caso, utilizzare meglio il gruppo. Ma forse anche meglio, basta usare brew come ho già detto nella mia risposta, funzionerà senza root fuori dalla scatola.
Vincent Gerris,

11

Reinstallare nodo e npm con Node Version Manger (come scritto nella documentazione di npm ) per evitare errori di autorizzazione:

In OSX:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

o segui questo articolo:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

Gli utenti Windows dovrebbero installare nvm-windows . Per ulteriore assistenza su come installare nvm, consultare il file Leggimi nvm .

Quindi scegli ad esempio:

nvm install 8.0.0
nvm use 8.0

Ora puoi provare di nuovo:

npm install -g less

1
L'ho usato per risolvere problemi di autorizzazione durante l'installazione di pacchetti su CodeSandbox.
Keith Taylor,

11

Risposta di Mac OS X.

Non hai accesso in scrittura alla directory node_modules

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

Aggiungi il tuo utente alla directory con accesso in scrittura

  1. Aprire la cartella contenente node_modules

    open / usr / local / lib /

  2. Esegui un cmd + I nella cartella node_modules per aprire la finestra di dialogo delle autorizzazioni
  3. Aggiungi il tuo utente per avere accesso in lettura e scrittura nella sezione condivisione e autorizzazioni inserisci qui la descrizione dell'immagine

La soluzione più semplice ed efficiente per MacOS
itsazzad,

8

inserisci qui la descrizione dell'immagineUtilizzare sudo -i per passare a $ root, quindi eseguire npm install -g xxxx


7

Per il mio ambiente mac

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

risolvere il problema


Credo che questo sia già trattato nella risposta di @ VagnerRodrigues sopra.
entpnerd

Sì, l'ho appena menzionato per l'ambiente Mac
Asadut Zaman,

3

Basta premere sotto il comando:

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

Analizziamolo:

sudo

significa che stiamo eseguendo questo comando come root, il superutente del sistema. Questo perché non abbiamo i permessi per scrivere su quella cartella, ma root sarà in grado di riparare qualsiasi permesso. Questo comando indica anche che il sistema richiederà la conferma della password.

chown

è il comando che usiamo per cambiare il proprietario di un file o di una cartella. Impostiamo l'opzione -R per modificare il proprietario in modo ricorsivo, quindi otteniamo anche l'accesso del proprietario a tutti i file già contenuti.

$ USER

è una variabile d'ambiente impostata automaticamente sul tuo nome utente.

E l'ultimo pezzo è il percorso della cartella.

L'esecuzione di questo percorso renderà la cartella tua, così potrai eseguire in sicurezza i tuoi comandi npm install -g!


0

Ho provato tutte le soluzioni suggerite ma nulla ha funzionato.

Sto usando macOS Catalina 10.15.3

Vai a / usr / local /

Seleziona la cartella bin> Ottieni informazioni

Aggiungi il tuo utente a Condivisione e autorizzazioni. Autorizzazioni di lettura e scrittura. inserisci qui la descrizione dell'immagine

E vai al terminale ed esegui npm install -g @ ionic / cli

Mi ha aiutato


-1

In linux assicurati di ottenere tutte le autorizzazioni con:

sudo su


-3

Ciao sto usando Ubuntu 18 e ho avuto anche questo messaggio di errore durante l'installazione di Prisma, quindi l'ho solo aggiunto sudoin primo piano

sudo npm i -g prisma
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.