Di instal npm: Penolakan tidak tertangani Kesalahan: EACCES: izin ditolak

271

Saya telah berhasil merusak npmpemasangan saya , dan setiap kali saya mencoba menginstal paket menggunakan npm install, saya menerima pesan kesalahan di sepanjang baris ini:

Kesalahan penolakan tidak tertangani: EACCES: izin ditolak, buka '/ Pengguna /marknorgate/.npm/_cacache/tmp/a449402d'

Saya telah mencoba menginstal ulang node & npm, dan saya juga mencoba untuk memindahkan cache npm saya di tempat lain menggunakan instruksi ini tetapi tidak ada yang berhasil.

Bagaimana saya bisa membuatnya bekerja?

serlingpa
sumber

Jawaban:

924

Kembalikan kepemilikan folder terkait npm pengguna, ke pengguna saat ini, seperti ini:

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
SrAxi
sumber
10
Ini bekerja untuk saya setelah saya mencoba 4-5 hal lain yang tidak berhasil: 1) --unsafe-perm, 2) memutakhirkan npm, 3) memulai kembali, 4) berjalan dengan sudo, dll.
Alex York
2
Sama seperti @AlexYork untuk saya. Saya telah melihat pengguna dan grup saya sebagai pemilik keduanya tetapi saya kira satu atau dua subdirektori memiliki pemilik yang berbeda. Terima kasih!
Vedran
1
Ini bekerja untuk saya :), sebelum itu saya mencoba docs.npmjs.com/… ini . Tidak bisa mengerti apakah itu masalah yang sama atau berbeda.
nim118
1
Sepertinya, pada beberapa titik di flailing saya dengan node, salah satu direktori cache itu dibuat dengan rootkepemilikan. Ini memperbaiki semuanya. Terima kasih!
Lonnon Foster
2
ini bekerja untuk saya, terima kasih! Saya mencoba menginstal ulang npm dengan manajer versi simpul yang direkomendasikan oleh npm tetapi tidak berhasil!
Winnie Phan
67

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

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

Osama Rashid
sumber
42

Ini terjadi jika pertama kali Anda menjalankan NPM dengan sudo, misalnya saat mencoba melakukan npm install -g.

Folder cache harus dimiliki oleh pengguna saat ini, bukan root.

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

Ini akan memberikan kepemilikan pada folder di atas saat berjalan dengan izin pengguna normal (bukan sebagai sudo).

Perlu juga dicatat bahwa Anda seharusnya tidak menginstal paket global menggunakan SUDO. Jika Anda mengalami masalah dengan izin, ada baiknya mengubah direktori global Anda. Dokumen merekomendasikan:

mkdir ~/.npm-global

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

Kemudian perbarui PATH Anda di mana pun Anda mendefinisikannya (~ /. Profil dll.)

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

Anda kemudian perlu memastikan variabel env PATH diatur (me-restart terminal atau menggunakan perintah sumber)

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

Ryu Kent
sumber
3
Memilih ini untuk penjelasan yang jelas tentang mengapa :)
lnoogn
Ya. Ini memecahkan masalah bagi saya ketika "solusi yang tepat" di atas tidak.
John Smith
Semua hal ini harus diabstraksi oleh npm, tetapi kita harus mengatasinya secara manual. Anda akan berpikir itu akan menjadi prioritas tinggi bagi pengelola untuk memperbaiki hal-hal seperti ini, tetapi apa yang saya tahu. Terima kasih telah menjelaskan mengapa kami perlu melakukan perintah ini!
YungGun
11
sudo npm cache clean --force --unsafe-perm

dan kemudian npm saya berjalan normal

Mwangi Gituathi
sumber
9

Jawaban di atas tidak berhasil untuk saya. Coba jalankan perintah Anda dengan --unsafe-perm.

misalnya

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

Ini sepertinya menyelesaikan masalah.

Junaid Farooq
sumber
@JenLim sudahkah Anda mengatasinya atau tidak?
Junaid Farooq
Saya memecahkan masalah dengan menjalankan terminal berikut: npm cache clear - force.
Aspyn Lim
6

Jika tidak ada saran dalam jawaban bekerja, coba perintah berikut: npm cache clear --force. Ini berhasil untuk saya.

Saya menemukannya di https://github.com/vuejs/vue-cli/issues/1809 .

Aspyn Lim
sumber
2

cukup buat folder di _cache/tmpbawah .npmsecara manual di lokasi /Users/marknorgate/.npm/_cacache/tmpdan jalankan perintah Anda dengan akses administrator

Anshuman Jaiswal
sumber
2
sudo npm install --unsafe-perm=true --allow-root

Inilah yang bekerja untuk saya

BliteKnight
sumber
1

Cukup lakukan sudo npm cache clean --force --unsafe-permdan npm iakan berjalan normal.

James Okunlade
sumber
1

ubah kepemilikan

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

bekerja karena saya menginstal paket menggunakan sudo

Teknologis
sumber
1

Coba gunakan ini: Pada baris perintah, di direktori home Anda, buat direktori untuk instalasi global:

mkdir ~/.npm-global

Konfigurasikan npm untuk menggunakan jalur direktori baru:

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

Di editor teks pilihan Anda, buka atau buat file profil ~ /. Dan tambahkan baris ini:

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

Pada baris perintah, perbarui variabel sistem Anda:

source ~/.profile

Sekarang gunakan npm instal itu harus bekerja.

AyushKatiyar
sumber
0

Anda dapat mencoba perintah berikut untuk expo:

sudo chown -R $USER:$GROUP ~/.expo
cesur bağcı
sumber
0

Cukup jalankan di terminal: sudo chown -R $(whoami) ~/.npm

Ini berhasil bagi saya !!

Akshita Agarwal
sumber
-1

Yang ini bekerja untuk saya:

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

Saya tidak menggunakan -gkarena saya adalah satu-satunya pengguna. Saya menggunakan MacBook Air.

Arly Ordonez
sumber