W przypadku instalacji npm: nieobsługiwane odrzucenie Błąd: EACCES: odmowa uprawnień


271

Udało mi się uszkodzić moją npminstalację i za każdym razem, gdy próbuję zainstalować pakiety przy użyciu npm install, otrzymuję komunikaty o błędach w następujący sposób:

Nieobsługiwane odrzucenie Błąd: EACCES: odmowa dostępu, otwórz „/Users/marknorgate/.npm/_cacache/tmp/a449402d”

Próbowałem ponownie zainstalować węzeł i npm, a także próbowałem przenieść pamięć podręczną npm gdzie indziej, korzystając z tych instrukcji, ale nic nie działa.

Jak mogę to uruchomić?

Odpowiedzi:


924

Przywróć własność folderów powiązanych z NPM bieżącego użytkownika, tak jak to:

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

10
To zadziałało dla mnie po wypróbowaniu 4-5 innych rzeczy, które nie działały: 1) --unsafe-perm, 2) uaktualnianie npm, 3) restartowanie, 4) uruchamianie sudo itp.
— Alex York

2
To samo co @AlexYork dla mnie. Widziałem już mojego użytkownika i grupę jako właściciela tych dwóch, ale chyba podkatalog lub dwa miały różnych właścicieli. Dzięki!
— Vedran

1
Ten pracował dla mnie :), wcześniej próbowałem to docs.npmjs.com/... . Nie mogę zrozumieć, czy to ten sam problem, czy inny.
— nim118

1
Wygląda na to, że w pewnym momencie, gdy wymachiwałem węzłem, jeden z tych katalogów pamięci podręcznej został utworzony z rootwłasnością. To naprawiło wszystko. Dziękuję Ci!
— Lonnon Foster

2
to zadziałało dla mnie, dziękuję! Próbowałem ponownie zainstalować npm za pomocą menedżera wersji węzła, który jest polecany przez npm, ale to nie działało!
— Kubuś Phan


42

Dzieje się tak, jeśli po raz pierwszy uruchamiasz NPM z sudo, na przykład podczas próby instalacji npm -g.

Foldery pamięci podręcznej muszą być własnością bieżącego użytkownika, a nie root.

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

Daje to prawo własności do powyższych folderów, gdy działają z normalnymi uprawnieniami użytkownika (nie jak sudo).

Warto również zauważyć, że nie powinieneś instalować globalnych pakietów za pomocą SUDO. Jeśli napotkasz problemy z uprawnieniami, warto zmienić katalog globalny. Dokumenty zalecają:

mkdir ~/.npm-global

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

Następnie aktualizuj ŚCIEŻKĘ w dowolnym miejscu (~ / .profile itp.)

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

Następnie musisz się upewnić, że zmienna PATH env jest ustawiona (restart terminalu lub użycie polecenia source)

https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally


3
Głosuję na to, aby wyjaśnić, dlaczego :)
— lnoogn

Tak. To rozwiązało problem, gdy powyższe „prawidłowe rozwiązanie” nie.
— John Smith

Wszystkie te rzeczy powinny być wyodrębnione przez npm, ale zamiast tego musimy sobie z tym poradzić ręcznie. Można by pomyśleć, że naprawianie takich rzeczy będzie priorytetem dla opiekunów, ale co ja wiem. Dziękujemy za wyjaśnienie, dlaczego musimy wykonywać te polecenia!
— YungGun


9

Powyższa odpowiedź nie działała dla mnie. Po prostu spróbuj uruchomić polecenie--unsafe-perm .

na przykład

npm install -g node@latest --unsafe-perm

To wydaje się rozwiązać problem.


@JenLim załatwiłeś to czy nie?
— Junaid Farooq

Rozwiązałem problem, uruchamiając w terminalu: npm cache clear - force.
— Aspyn Lim 16.04.19


2

wystarczy utworzyć foldery _cache/tmpw ramach .npmręcznie na miejscu /Users/marknorgate/.npm/_cacache/tmpi uruchomić polecenie z uprawnieniami administratora





1

zmienić własność

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config 

działał jak zainstalowałem pakiet przy użyciu sudo


1

Spróbuj użyć tego: 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 i dodaj ten wiersz:

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

W wierszu polecenia zaktualizuj zmienne systemowe:

source ~/.profile

Teraz użyj npm install powinien działać.


0

możesz wypróbować następujące polecenie dla expo:

sudo chown -R $USER:$GROUP ~/.expo



-1

Ten działa dla mnie:

sudo chown -R $(whoami) ~/.npm

Nie korzystałem z, -gponieważ jestem jedynym użytkownikiem. Użyłem MacBooka Air.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.