Npm kurulumunda: İşlenmeyen ret Hatası: EACCES: izin reddedildi


271

Yüklememi bozmayı başardım npmve paketleri kullanarak her yüklemeye çalıştığımda npm install, şu satırlar boyunca hata iletileri alıyorum:

İşlenmeyen ret Hatası: EACCES: izin reddedildi, '/Users/marknorgate/.npm/_cacache/tmp/a449402d' dosyasını açın

Düğümü & npm yeniden yüklemeyi denedim ve ben de bu talimatları kullanarak başka bir yerde benim npm önbellek yerini denedim ama hiçbir şey işe yaramadı.

Nasıl çalıştırabilirim?

Yanıtlar:


924

Kullanıcının npm ile ilgili klasörlerinin sahipliğini geçerli kullanıcıya geri yükleyin, örneğin:

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

10
Bu işe yaramadı 4-5 başka şeyler denedikten sonra benim için çalıştı: 1) - güvenli olmayan perm, 2) npm yükseltme, 3) yeniden başlatma, 4) sudo, vb ile çalışan
Alex York

2
Benim için @AlexYork ile aynı. Kullanıcımı ve grubumu zaten bu ikisinin sahibi olarak gördüm ama sanırım bir alt dizinin veya ikisinin farklı sahipleri var. Teşekkürler!
Vedran

1
Bu benim için çalıştı :), daha önce bu docs.npmjs.com/… deniyordu . Aynı sorun mu yoksa farklı mı olduğunu anlayamıyorum.
nim118

1
Görünüşe göre, düğüm ile açığımın bir noktasında, bu önbellek dizinlerinden biri rootsahiplikle oluşturuldu . Bu her şeyi düzeltti. Teşekkür ederim!
Lonnon Foster

2
bu benim için çalıştı, teşekkürler! Npm npm tarafından önerilen bir düğüm sürüm yöneticisi ile yeniden yüklemek için çalıştı ama işe yaramadı!
Winnie Phan


42

Bu, NPM'yi ilk kez çalıştırdığınızda, örneğin bir npm install -g yapmaya çalışırken sudo ile gerçekleşirse olur.

Önbellek klasörlerinin kök değil, geçerli kullanıcıya ait olması gerekir.

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

Bu, normal kullanıcı izinleriyle (sudo olarak değil) çalışırken yukarıdaki klasörlere sahiplik verecektir.

Ayrıca, SUDO kullanarak global paketleri kurmamanız gerektiğini belirtmek gerekir. İzinlerle ilgili sorunlarla karşılaşırsanız, genel dizininizi değiştirmeye değer. Dokümanlar şunları önerir:

mkdir ~/.npm-global

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

Ardından PATH'nizi tanımladığınız her yerde güncelleyin (~ / .profile vb.)

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

Daha sonra PATH env değişkeninin ayarlandığından emin olmanız gerekir (terminali yeniden başlatma veya kaynak komutunu kullanma)

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


3
Neden böyle açık bir açıklama için bu oylama :)
lnoogn

Evet. Bu, yukarıdaki "doğru çözüm" olmadığında benim için sorunu çözdü.
John Smith

Tüm bu şeyler npm ile soyutlanmalıdır, ancak bunun yerine elle uğraşmak zorundayız. Koruyucuların böyle şeyleri düzeltmesinin yüksek öncelik olacağını düşünürdünüz, ama ne biliyorum. Bu komutları neden yapmamız gerektiğini açıkladığınız için teşekkür ederiz !
YungGun


9

Yukarıdaki cevap benim için işe yaramadı. Sadece komutunu çalıştırmayı dene --unsafe-perm.

Örneğin

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

Bu sorunu çözüyor gibi görünüyor.


@JenLim sıraladınız mı değil mi?
Junaid Farooq

Sorunu terminalde aşağıdakileri çalıştırarak çözdüm: npm cache clear - force.
Aspyn Lim


2

yalnızca konumun _cache/tmpaltında .npmmanuel olarak klasörler oluşturun /Users/marknorgate/.npm/_cacache/tmpve komutunuzu yönetici erişimiyle çalıştırın


2
sudo npm install --unsafe-perm=true --allow-root

Benim için çalışan buydu



1

Basitçe yapın sudo npm cache clean --force --unsafe-permve npm inormal şekilde gidecek.


1

sahipliği değiştir

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

sudo kullanarak paket yüklediğim gibi çalıştı


1

Bunu kullanmayı deneyin: Komut satırında, giriş dizininizde genel yüklemeler için bir dizin oluşturun:

mkdir ~/.npm-global

Npm'yi yeni dizin yolunu kullanacak şekilde yapılandırın:

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

Tercih ettiğiniz metin düzenleyicisinde bir ~ / .profile dosyası açın veya oluşturun ve şu satırı ekleyin:

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

Komut satırında sistem değişkenlerinizi güncelleyin:

source ~/.profile

Şimdi npm install kullanın çalışması gerekir.


0

expo için aşağıdaki komutu deneyebilirsiniz:

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


0

Sadece terminalde çalıştırın: sudo chown -R $(whoami) ~/.npm

Bu benim için çalıştı !!


-1

Bu benim için çalışıyor:

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

Ben kullanmadım -gçünkü ben tek kullanıcıyım. Bir MacBook Air kullandım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.