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?

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

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


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


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


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.


@JenLim sudahkah Anda mengatasinya atau tidak?
Junaid Farooq

Saya memecahkan masalah dengan menjalankan terminal berikut: npm cache clear - force.
Aspyn Lim


2

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


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

Inilah yang bekerja untuk saya



1

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


1

ubah kepemilikan

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

bekerja karena saya menginstal paket menggunakan sudo


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.


0

Anda dapat mencoba perintah berikut untuk expo:

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


0

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

Ini berhasil bagi saya !!


-1

Yang ini bekerja untuk saya:

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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.