Co może być przyczyną błędu Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
?
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! { 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! A complete log of this run can be found in:
npm ERR! /Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log
Odpowiedzi:
zmień swoje uprawnienia do plików .. w ten sposób
najpierw sprawdź, kto jest właścicielem katalogu
odmawia dostępu, ponieważ folder node_module jest własnością root
więc należy to zmienić, zmieniając root na użytkownika, ale najpierw uruchom poniższe polecenie, aby sprawdzić bieżącego użytkownika. Jak uzyskać nazwę aktywnego użytkownika za pomocą wiersza polecenia w OS X?
LUB
whoami
następnie zmień właściciela
LUB
LUB
źródło
sudo chown -R myuser:Company\\Domain\ Users /usr/local/lib/node_modules
. Aby poprawnie wymienić nazwę grupy, którą zrobiłemid -gn myuser
.illegal group name
. Więc zmieniłem polecenie nasudo chown -R ownerName: /usr/local/lib/node_modules
i zadziałało.chown
. github.com/nvm-sh/nvmAby zminimalizować ryzyko błędów uprawnień, możesz skonfigurować npm do korzystania z innego katalogu. W tym przykładzie utworzysz i użyjesz ukrytego katalogu w swoim katalogu domowym.
Zrób kopię zapasową komputera. W wierszu komend w katalogu 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'
W preferowanym edytorze tekstu otwórz lub utwórz plik
~/.profile
plik i dodaj ten wiersz:
export PATH=~/.npm-global/bin:$PATH
W wierszu polecenia zaktualizuj zmienne systemowe:
source ~/.profile
Aby przetestować nową konfigurację, zainstaluj pakiet globalnie bez użycia sudo
źródło
npm config set prefix
(szczególnie, jeśli piszesz instalator inny niż root), możesz zastąpićPREFIX
env var lub podać--prefix
opcję, z których oba są równoważnenpm config set prefix
. (nie jestem pewien, które to przesłania)Wszystko, co musisz zrobić, to dodać USER do właściciela / local / lib
źródło
chown
, istnieje wysokie ryzyko zniszczenia struktury uprawnień całego systemu plików.sudo chmod -R 777 /
.spróbuj dołączyć sudo przed jakimkolwiek poleceniem, które próbujesz.
w ten sposób: instalacja sudo npm
Używanie sudo z poleceniem w systemie Linux / UNIX ogólnie podnosi twoje uprawnienia do poziomów administratora. W systemie Windows konto administratora jest zwykle nazywane „Administratorem”. W systemie Linux / Unix konto administratora jest zwykle nazywane „root”.
Użytkownik root ma uprawnienia do uzyskiwania dostępu, modyfikowania lub usuwania prawie dowolnego pliku na komputerze. Zwykłe konta użytkowników mogą uzyskiwać dostęp, modyfikować lub usuwać wiele mniej plików. Ograniczenia dotyczące zwykłego konta chronią komputer przed nieautoryzowanymi lub szkodliwymi programami lub użytkownikami. Niektóre procesy wymagają wykonania działań na plikach lub folderach, do których normalnie nie masz uprawnień dostępu. Jednym z tych działań jest instalacja programu, do którego każdy może uzyskać dostęp.
W twoim przypadku uruchomienie polecenia instalacyjnego z sudo daje uprawnienia administratora i pozwala modyfikować pliki, których normalny użytkownik nie ma uprawnień do modyfikowania.
źródło
Próbowałem rozwiązania odpowiedzi udzielonej przez @okanda, ale nie zadziałało to dla mnie.
Jednak działało idealnie, gdy zrobiłem to dla kilku folderów, takich jak wspomniane w tym wątku: https://github.com/angular/angular-cli/issues/9676#issuecomment-464857493
źródło
Podczas instalowania globalnych pakietów w Ubuntu , potrzebujesz specjalnych uprawnień do zapisu podczas pisania do
usr/bin
folderu. To ze względów bezpieczeństwa. Za każdym razem, gdy instalujesz pakiet globalny, użyj:W konkretnym przypadku będzie to:
źródło
Wygląda na to, że masz problemy z uprawnieniami. Jeśli instalujesz,
npm-packages
to możeEACCES
wystąpić błąd podczas próby zainstalowania pakietu globalnie. Oznacza to, że nie masz uprawnień do zapisu w katalogachnpm
używanych do przechowywania globalnych pakietów i poleceń.Spróbuj uruchomić komendy:
sudo chmod u+x -R 775 ~/.npm
asudo chown $USER -R ~/.npm
czy można po prostu uruchomić dowolnąnpm
komendę zsudo
, że powinien dostać rozwiązać problem.Jeśli instalujesz
npm-package
lokalnie, powinieneś być w lokalnym katalogu projektu i możesz spróbować uruchomićsudo npm install <pkg-name>
polecenie, aby zainstalować wymagany pakiet. celem użyciasudo
jest zmiana uprawnień właściciela, abyś mógł upoważnić bieżącego użytkownika do uruchamianianpm
poleceń.Polecam zajrzeć na https://docs.npmjs.com/getting-started/fixing-npm-permissions
źródło
Próbowałem zainstalować expo reagujące i oprócz sudo musiałem dodać --unsafe-perm
lubię to. To rozwiązuje mój problem
źródło
Jeśli masz do czynienia z tym problemem na komputerze Mac. Wykonaj następujące kroki
Najpierw sprawdź, kto jest właścicielem tego pliku, używając poniższego polecenia
znajdziesz plik jak poniżej. Jeden z nich jest poniżej
czy zauważyłeś, że powyższy plik jest własnością root, aby dokonać zmian w środku, musisz zmienić właściciela ścieżki statku.
możesz użyć polecenia sprawdź, kto jest bieżącym użytkownikiem za pomocą tego polecenia
a następnie możesz to zmienić, wywołując to polecenie (wystarczy zastąpić swoją nazwę użytkownika nazwą właścicielName)
w moim przypadku, jak wiadomo, użytkownik to „yamsol”, wywołam to polecenie w ten sposób
Otóż to.
źródło
Uważaj na wszystkie odpowiedzi, które zmieniają właściciela wszystkich katalogów w katalogu / usr / local Zasadniczo, nie psuj systemu linux !!!
Myślę, że najlepszym sposobem jest użycie własnego folderu do zlokalizowania wszystkich globalnych pakietów: https://www.competa.com/blog/how-to-run-npm-without-sudo/
źródło
Możesz zainstalować npm za pomocą menedżera wersji Node lub instalatora Node. W dokumentach stwierdzono:
Ponieważ wystąpił błąd uprawnień , prawdopodobnie zainstalowałeś npm za pomocą instalatora węzła, a teraz musisz go ponownie zainstalować za pomocą nvm (menedżera wersji węzła).
Na szczęście jest to bardzo proste. Nie musisz nawet usuwać bieżącej wersji npm lub Node.js.
Wszystko, co musisz zrobić, to
Zainstaluj NVM. W przypadku węzła OSX lub Linux należy użyć:
Spowoduje to utworzenie folderu nvm w katalogu domowym.
Następnie
Zainstaluj npm i node.js przez nvm. Aby to zrobić, wystarczy zadzwonić
Teraz można zainstalować pakiet globalnie bez użycia
sudo
lub zmiany właścicielanode_modules
wusr
folderze.źródło
fish
, w celu prawidłowego działania nvm potrzebuje opakowania rybnego github.com/FabioAntunes/fish-nvmUżyj tego polecenia, aby zainstalować
npm
jako użytkownik sudo:zamiast npm zainstaluj -g stwórz-zareaguj -p pp.
źródło
Byłem w stanie rozwiązać problem, korzystając z następujących elementów w systemie Mac.
źródło
Dla użytkowników NVM
i
zamień
v8.9.1
na używaną wersję węzła.źródło
sudo chown -R $USER home/samuel/.nvm/versions/node/v8.10.0/lib/node_modules
Wygląda na to, że próbowałeś zainstalować pakiet npm globalnie, a nie lokalnie, jak to
man npm install
opisuje:Zasadniczo, gdy konfigurujesz projekt npm (wśród wielu innych, które możesz mieć), nie jest dobrym pomysłem instalowanie pakietów w modułach globalnych Node.js (/ usr / local / lib / node_modules), jako dziennik debugowania zasugerował.
Zamiast używać
-g
, użyj--save
, który automatycznie zapisze pakiet jako zależność dla twojegopackage.json
pliku:Lubię to:
Ale jak wspomniano w innych odpowiedziach, jeśli zamierzasz użyć
-g
, musisz użyćsudo
( jeśli użytkownik ma uprawnienia sudo: patrz / etc / sudoers ) podczas wykonywanianpm install express-generator -g
, ale w rzeczywistości nie jest to dobry pomysł, ponieważ może to powodować problemy z uprawnieniami.OGŁOSZENIE
Istnieją instrukcje dotyczące instalowania
express-generator
z-g
opcją, aby skrypt byłexpress-cli.js
dostępny w ścieżce systemowej, ale możesz również użyć lokalnie zainstalowanego skryptu, który znajduje się wnode_modules
projekcie ifm np:IMHO, używanie
-g
(także używaniesudo
) jest jak hic sunt dracones , jeśli nie jesteś pewien konsekwencji.W celu uzyskania dalszych informacji:
źródło
Stało się tak w wyniku
npm
niemożności uzyskania dostępu donode_modules
lokalnego katalogu globalnego podczas działaniana przykład
naprawia problem, teraz możesz uruchomić polecenie, które uruchomiłeś ponownie.
źródło
Po prostu możesz zmienić właściciela lub po prostu użyć sudo, zanim wykonasz takie polecenie
sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
( zmiana właściciela )lub
Otóż to.
źródło
Dla linux / ubuntu, jeśli polecenie
npm install -g <package_name>
Poprawka: instalacja z uprawnieniami administratora
sudo npm install <package_name> -g
źródło
Aby zainstalować program React, potrzebujesz uprawnień poziomów administratora. W systemie Linux / Unix konto administratora jest zwykle nazywane „root”.
Aby uzyskać uprawnienia administratora, uruchom na terminalu następujące polecenie:
a następnie po prostu uruchom polecenie, aby zainstalować React:
Jednak zespół reagjs zachęca nas do korzystania z następującego polecenia zamiast instalowania pakietu globalnego.
źródło
create-react-app
uprawnienia roota, muszą być instalowane jako pakiety globalne; w przeciwnym razie nie będziesz mógł go zainstalować. Jednak zespół reagjs zachęca nas do korzystania z następującego polecenianpx create-react-app app_name
zamiast instalowania pakietu globalnego.sudo chown -R $ USER / usr / local / lib / node_modules
źródło
Pomógł tylko to:
źródło
Po długich badaniach zrozumiałem, że nic nie jest wymagane do zainstalowania kątowego cli w systemie Mac OS. Wystarczy użyć
sudo npm install -g @angular/cli
terminala, aby wprowadzić hasło, a następnie kontynuować instalację cli. To zadziałało dla mnie.źródło
Podobne do odpowiedzi POsha, ale to działało dla mnie na Ubuntu 19
Z tego linku
https://github.com/inconshreveable/ngrok/issues/429
źródło
Jeśli używasz Linuksa (tj .: Arch)
Domyślnie to polecenie instaluje pakiet w katalogu / usr / lib / node_modules / npm i wymaga do tego uprawnień administratora.
Aby zezwolić na instalacje dla całego użytkownika
Aby zezwolić na instalowanie pakietów globalnych dla bieżącego użytkownika, ustaw
npm_config_prefix
zmienną środowiskową. Jest to używane zarówno przez npm, jak i przędzę.Zaloguj się ponownie lub podaj źródło, aby zaktualizować zmiany.
Możesz również określić
--prefix
parametr dlanpm install
. Nie jest to jednak zalecane, ponieważ należy go dodawać przy każdej instalacji pakietu globalnego.Więc nie musisz zmieniać uprawnień do folderów
źródło
Mogłem pozbyć się tego problemu, instalując
nvm
, a następnie ustawiając węzeł na najnowszą wersję.nvm
za pomocącurl
(najnowsza wersja przejdź do nvm.sh )Po wykonaniu powyższych poleceń będziesz mógł zainstalować React / Angular w Ubuntu.
źródło
Użyj 'sudo npm install xyz' będzie działać.
źródło
Po prostu dodaj „sudo” przed poleceniem npm. Otóż to.
źródło
Użyłem sudo, ale to nie rozwiązało problemu, naprawiłem problem, zmieniając uprawnienia do folderu node_modules,
Jeśli chcesz, możesz zastąpić 777 innym kodem, jeśli nie ustawisz uprawnień dla wszystkich użytkowników / grup.
źródło
Dla tych z Was, którzy nadal nie mogą rozwiązać problemu po użyciu wyżej wymienionych rozwiązań. Spróbuj tego
To powinno wystarczyć, na zdrowie!
źródło