2016-03-12 21 views
12

Próbuję zainstalować ESLint z KMP przechodząc:błędach: EACCES: brak dostępu podczas próby zainstalowania ESLint użyciu KMP

npm install -g eslint 

Jednak pojawia się następujący błąd:

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 

I Szczerze mówiąc, otrzymuję to za każdym razem, gdy próbuję zainstalować coś z npm. Czasami używa się "sudo", czasami nie ... Jak mogę to naprawić raz na zawsze?

Odpowiedz

6

Spróbuj polecenia sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules}

to zmieni własność podfolderów używanych przez KMP i innych narzędzi (lib/node_modules, bin, i akcje).

+4

Jestem prawie pewien, że to polecenie, które uruchomiłem, które zepsuło sudo na moim pi. Teraz muszę ponownie zainstalować mój pi. Jestem nowy w Linuksie, więc wiem, że istnieje niebezpieczeństwo uruchomienia poleceń, których nie rozumiem. – Roaders

14

Ten problem jest dobrze udokumentowany w dokumencie npm docs: Fixing npm permissions.

Masz 3 rozwiązań dostępnych:

Opcja 1: Zmiana uprawnień do domyślnego katalogu KMP w

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

Opcja 2: Zmiana domyślnego katalogu NPM do ukrytego katalogu w Twój folder domowy

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

Wariant 3: Za pomocą menedżera pakietów, które dba o to dla ciebie

brew install node 
+0

Opcja 2 działała dobrze, ale wykorzystałem katalog ~/.npm, ponieważ moje pliki dotfile już skonfigurowały tę lokalizację (ale zapomniałem!) –

+0

upvoting dla opcji 2. Powinienem był to zrobić dawno temu: pot-uśmiech: –

+0

Jeśli używasz opcji pierwszej, możesz skończyć z tym problemem, więc nie polecam tego w ogóle: https://askubuntu.com/questions/452860/usr-bin-sudo-must-be-owned-by-uid -0-and-have-the-setuid-bit-set-set # 471503 Użytkownik root powinien posiadać/użytkownik/bin – Johannes

3

Zastosowanie --unsafe-perm = true i --allow-korzeniowych flagi z KMP zainstalować jak poniżej: -

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

działało jak urok dla mnie.

Powiązane problemy