instalacja npm -g mniej nie działa: EACCES: odmowa uprawnień

202

Próbuję skonfigurować mniej phpstorm, aby móc kompilować pliki .less do .css podczas zapisywania. Zainstalowałem node.js i następnym krokiem (zgodnie z tym https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html ) jest uruchomienie tego polecenia w terminal

npm install -g less

Jednak gdy to robię, otrzymuję te błędy

  ~  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

Jestem kompletnym noobem i nie jestem pewien, co dalej. Każda forma pomocy jest mile widziana!

xslibx
źródło

Odpowiedzi:

353

Używanie sudo nie jest zalecane. Może to dać ci problem z pozwoleniem później. Chociaż powyższe działa, nie jestem fanem zmieniania folderów należących do roota, aby były zapisywalne dla użytkowników, chociaż może to być problem tylko dla wielu użytkowników. Aby obejść ten problem, możesz użyć grupy z „użytkownikami npm”, ale jest to również większy nakład administracyjny. Zobacz tutaj opcje radzenia sobie z uprawnieniami z dokumentacji: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Wybrałbym opcję 2:

Aby zminimalizować ryzyko błędów uprawnień, możesz skonfigurować npm do korzystania z innego katalogu. W tym przykładzie będzie to ukryty katalog w folderze domowym.

Utwórz katalog dla instalacji globalnych:

 mkdir ~/.npm-global

Skonfiguruj npm, aby używał nowej ścieżki do katalogu:

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

Otwórz lub utwórz plik ~ / .profile i dodaj ten wiersz:

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

Wróć do wiersza poleceń i zaktualizuj zmienne systemowe:

 source ~/.profile

Test: pobierz pakiet globalnie bez użycia sudo.

npm install -g jshint

Jeśli nadal wyświetla się błąd uprawnień, uruchom (Mac OS):

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

Działa to z domyślną instalacją ubuntu:

sudo apt-get install nodejs npm

Polecam, nvmjeśli chcesz mieć większą elastyczność w zarządzaniu wersjami: https://github.com/creationix/nvm

W systemie MacOS użyj naparu, powinien on działać bez sudogotowego zestawu, jeśli używasz najnowszej npmwersji. Cieszyć się :)

Vincent Gerris
źródło
Heads up - na Ubuntu 18.04 musiałem się wylogować i zalogować ponownie, zanim zmiana zostanie zastosowana automatycznie również dla wszystkich nowych okien terminali.
Alexander Nied
Alexander, czy upewniłeś się, że użyłeś polecenia źródłowego? To powinno zadbać o ustawienie odpowiednich zmiennych środowiskowych, wylogowanie nie powinno być potrzebne (ale działa).
Vincent Gerris
to nie działało $ npm install -g jshint npm ERR! napisz po zakończeniu npm ERR! Pełny dziennik tego uruchomienia można znaleźć w: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith
3
Dzięki za „Na MacOS użyj napar”
Bijender Singh Shekhawat
110

Uruchom następujące polecenia w oknie terminala (uwaga: NIE zamieniaj części $ USER ... to polecenie dla systemu Linux, aby uzyskać użytkownika!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules
Vagner Rodrigues
źródło
7
Czy dobrym pomysłem jest uczynienie się właścicielem rzeczy /usr? Co zrobić, jeśli ktoś inny chce zainstalować elementy węzłów?
Mark
6
Pracował dla mnie na MacOS High Sierra, Potrzebowałem tylko jeden z trzech komend: sudo chown -R $USER /usr/local/lib/node_modules. @ Mark To prawda, ale oczywiście nie ma problemu, jeśli masz tylko jednego użytkownika.
Fabian von Ellerts,
@FabianvonEllerts Cóż, nadal łatwiej jest przypadkowo usunąć pliki systemowe, ponieważ sudo nie będzie już potrzebne ... Postępuję zgodnie z najlepszymi praktykami, nawet gdy jestem sam, ale to zależy od ciebie.
Mark
Jestem z Markiem, chyba że masz jednego użytkownika (i nawet wtedy), nie chcesz, aby podkatalogi / usr były własnością jednego użytkownika, w takim przypadku lepiej użyj grupy. Ale może nawet lepiej, po prostu użyj naparu, jak wspomniałem w mojej odpowiedzi, będzie działał bez rootowania po wyjęciu z pudełka.
Vincent Gerris,
11

Zainstaluj ponownie węzeł i npm za pomocą Node Version Manger (zgodnie z dokumentacją npm ), aby uniknąć błędów uprawnień:

W OSX:

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

lub postępuj zgodnie z tym artykułem:

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

Użytkownicy systemu Windows powinni zainstalować nvm-windows . Aby uzyskać dalszą pomoc dotyczącą instalacji NVM, zapoznaj się z plikiem Readme NVM .

Następnie wybierz na przykład:

nvm install 8.0.0
nvm use 8.0

Teraz możesz spróbować jeszcze raz:

npm install -g less
gazdagergo
źródło
1
Użyłem tego do rozwiązania problemów z uprawnieniami podczas instalowania pakietów na CodeSandbox.
Keith Taylor
11

Odpowiedź na Mac OS X.

Nie masz dostępu do zapisu do katalogu node_modules

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

Dodaj użytkownika do katalogu z dostępem do zapisu

  1. Otwórz folder zawierający moduły_węzła

    otwórz / usr / local / lib /

  2. Wykonaj polecenie cmd + I w folderze node_modules, aby otworzyć okno dialogowe uprawnień
  3. Dodaj użytkownika, aby mieć dostęp do odczytu i zapisu w sekcji udostępniania i uprawnień wprowadź opis zdjęcia tutaj
Roderick Jonsson
źródło
Najłatwiejsze i najbardziej wydajne rozwiązanie dla MacOS
itsazzad
8

wprowadź opis zdjęcia tutajUżyj sudo -i, aby przełączyć na $ root, a następnie uruchom npm install -g xxxx

użytkownik3393929
źródło
7

Dla mojego środowiska Mac

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

rozwiązać problem

Asadut Zaman
źródło
Myślę, że jest to już uwzględnione w powyższej odpowiedzi @ VagnerRodrigues.
entpnerd
Tak, właśnie wspomniałem o środowisku Mac
Asadut Zaman
3

Po prostu naciśnij poniżej polecenia:

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

Rozbijmy to:

sudo

oznacza, że ​​uruchamiamy to polecenie jako root, superużytkownik systemu. Wynika to z faktu, że nie mamy uprawnień do zapisu w tym folderze, ale root będzie mógł naprawić dowolne uprawnienia. To polecenie oznacza również, że system poprosi o potwierdzenie hasła.

chown

to polecenie, którego używamy do zmiany właściciela pliku lub folderu. Ustawiamy opcję -R, aby rekurencyjnie zmieniać właściciela, dzięki czemu uzyskujemy również dostęp właściciela do wszystkich plików już w nim zawartych.

USER US $

to zmienna środowiskowa automatycznie ustawiana na twoją nazwę użytkownika.

Ostatnim elementem jest ścieżka folderu.

Uruchomienie tej ścieżki sprawi, że folder będzie twój, więc możesz bezpiecznie uruchamiać polecenia npm install -g!

Akash Singh Sengar
źródło
0

Wypróbowałem wszystkie sugerowane rozwiązania, ale nic nie działało.

Używam macOS Catalina 10.15.3

Idź do / usr / local /

Wybierz folder bin> Uzyskaj informacje

Dodaj użytkownika do Udostępniania i uprawnień. Uprawnienia do odczytu i zapisu. wprowadź opis zdjęcia tutaj

Idź do terminala i uruchom npm install -g @ ionic / cli

Pomogło mi to.

Gohar SUltan
źródło
-1

W Linuksie upewnij się, że uzyskasz pełną władzę dzięki:

sudo su
kira
źródło
-3

Cześć, używam Ubuntu 18 i też dostałem ten komunikat o błędzie podczas instalowania Prisma, a następnie po prostu dodaję sudoz przodu

sudo npm i -g prisma
UA_
źródło