2016-03-12 6 views
12

Sto cercando di installare ESLint con NPM andando:errore: EACCES: Autorizzazione negata quando si tenta di installare ESLint utilizzando npm

npm install -g eslint 

Tuttavia ottengo il seguente errore:

Deans-Air:~ deangibson$ npm install -g eslint 
npm ERR! tar.unpack untar error /Users/deangibson/.npm/eslint/2.4.0/package.tgz 
npm ERR! Darwin 15.3.0 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "eslint" 
npm ERR! node v4.2.3 
npm ERR! npm v2.14.7 
npm ERR! path /usr/local/lib/node_modules/eslint 
npm ERR! code EACCES 
npm ERR! errno -13 
npm ERR! syscall mkdir 

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

E ad essere sincero, lo capisco ogni volta che provo a installare qualcosa con npm. A volte l'uso di "sudo" funziona, a volte no ... Come posso risolvere questo problema una volta per tutte?

risposta

6

Prova questo comando sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules}

questo cambierà la proprietà delle sotto-cartelle utilizzate da NPM e alcuni altri strumenti (lib/node_modules, bin, e azioni).

+4

Sono abbastanza sicuro che questo è il comando che ho eseguito che ha rotto sudo sul mio pi. Ora devo reinstallare il mio pi. Sono nuovo di linux quindi so che c'è il rischio di eseguire comandi che non capisco. – Roaders

14

Questo problema è ben documentato nello npm docs: Fixing npm permissions.

avete 3 soluzioni disponibili:

Opzione 1: modificare l'autorizzazione alla directory predefinita di NPM

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share} 

Opzione 2: Modificare la directory predefinita di NPM in una directory nascosta la tua cartella Inizio

mkdir ~/.npm-global 
npm config set prefix '~/.npm-global' 
export PATH=~/.npm-global/bin:$PATH 
source ~/.profile 

Opzione 3: utilizzare un gestore di pacchetti che si prende cura di questo per voi

brew install node 
+0

L'opzione 2 ha funzionato bene, ma ho utilizzato la directory ~/.npm come i miei dotfiles avevano già configurato quella posizione (ma ho dimenticato!) –

+0

upvoting per l'opzione 2. Avrei dovuto farlo molto tempo fa: sweat-smile: –

+0

Se usi l'opzione uno, potresti finire con questo problema, quindi non lo consiglio affatto: https://askubuntu.com/questions/452860/usr-bin-sudo-must-be-owned-by-uid -0-e-have-the-setuid-bit-set # 471503 L'utente root dovrebbe possedere/user/bin – Johannes

3

Usa --unsafe-perm = true e --allow root bandiere con NPM installazione come di seguito: -

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

ha funzionato come fascino per me.