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ć?

serlingpa
źródło

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
SrAxi
źródło
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
66

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

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

Osama Rashid
źródło
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

Ryu Kent
źródło
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
11
sudo npm cache clean --force --unsafe-perm

a potem npm i idzie normalnie

Mwangi Gituathi
źródło
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.

Junaid Farooq
źródło
@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
6

Jeśli żadna z sugestii w odpowiedziach nie zadziałała, wypróbuj następujące polecenie: npm cache clear --force . To zadziałało dla mnie.

Znalazłem go na https://github.com/vuejs/vue-cli/issues/1809 .

Aspyn Lim
źródło
2

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

Anshuman Jaiswal
źródło
2
sudo npm install --unsafe-perm=true --allow-root

Ten działał dla mnie

BliteKnight
źródło
1

Po prostu zrób sudo npm cache clean --force --unsafe-permi npm ipójdzie normalnie.

James Okunlade
źródło
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

Technolog
źródło
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ć.

AyushKatiyar
źródło
0

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

sudo chown -R $USER:$GROUP ~/.expo
cesur bağcı
źródło
0

Po prostu uruchom na terminalu: sudo chown -R $(whoami) ~/.npm

To zadziałało dla mnie !!

Akshita Agarwal
źródło
-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.

Arly Ordonez
źródło