Apa yang mungkin menyebabkan kesalahan Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
?
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR! { Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log
Jawaban:
ubah izin file Anda .. seperti ini
periksa dulu siapa yang memiliki direktori
itu menolak akses karena folder node_module dimiliki oleh root
jadi ini perlu diubah dengan mengubah root ke pengguna Anda tetapi pertama jalankan perintah di bawah ini untuk memeriksa pengguna Anda saat ini. Bagaimana cara mendapatkan nama pengguna aktif melalui baris perintah di OS X?
ATAU
whoami
lalu ganti pemilik
ATAU
ATAU
sumber
sudo chown -R myuser:Company\\Domain\ Users /usr/local/lib/node_modules
. Untuk mendaftar dengan benar nama grup yang saya lakukanid -gn myuser
.illegal group name
. Jadi saya mengubah perintahsudo chown -R ownerName: /usr/local/lib/node_modules
dan itu berhasil.chown
. github.com/nvm-sh/nvmUntuk meminimalkan kemungkinan kesalahan izin, Anda dapat mengonfigurasi npm untuk menggunakan direktori lain. Dalam contoh ini, Anda akan membuat dan menggunakan direktori tersembunyi di direktori home Anda.
Cadangkan komputer Anda. Di 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 a
~/.profile
file dan tambahkan baris ini:
export PATH=~/.npm-global/bin:$PATH
Pada baris perintah, perbarui variabel sistem Anda:
source ~/.profile
Untuk menguji konfigurasi baru Anda, instal paket secara global tanpa menggunakan sudo
sumber
npm config set prefix
(terutama jika Anda sedang menulis installer non-root), Anda mungkin ingin menggantiPREFIX
env var atau memberikan--prefix
opsi, yang keduanya setara dengannpm config set prefix
. (tidak yakin yang menimpa mana)Yang perlu Anda lakukan adalah menambahkan USER ke pemilik / local / lib
sumber
chown
Anda berisiko tinggi menghancurkan struktur izin seluruh sistem file Anda.sudo chmod -R 777 /
.coba tambahkan sudo sebelum perintah apa pun yang Anda coba.
seperti ini: sudo npm install
Menggunakan sudo dengan perintah di Linux / UNIX umumnya meningkatkan izin Anda ke tingkat pengguna super. Di Windows, akun superuser biasanya disebut 'Administrator.' Di Linux / Unix, akun superuser umumnya bernama 'root'.
Pengguna root memiliki izin untuk mengakses, memodifikasi, atau menghapus hampir semua file di komputer Anda. Akun pengguna normal dapat mengakses, mengubah, atau menghapus lebih sedikit file. Pembatasan akun normal melindungi komputer Anda dari program atau pengguna yang tidak sah atau berbahaya. Beberapa proses mengharuskan Anda untuk melakukan tindakan pada file atau folder yang biasanya tidak memiliki izin untuk Anda akses. Menginstal program yang dapat diakses semua orang adalah salah satu dari tindakan ini.
Dalam kasus Anda, menjalankan perintah instalasi dengan sudo memberi Anda izin pengguna super, dan memungkinkan Anda untuk memodifikasi file yang pengguna normal Anda tidak memiliki izin untuk memodifikasi.
sumber
Saya mencoba solusi dari jawaban yang diberikan oleh @okanda tetapi tidak berhasil bagi saya.
Namun itu bekerja dengan sempurna ketika saya melakukannya untuk beberapa folder seperti yang disebutkan di utas ini: https://github.com/angular/angular-cli/issues/9676#issuecomment-464857493
sumber
Saat menginstal paket global di ubuntu , Anda memerlukan izin menulis khusus saat Anda menulis ke
usr/bin
folder. Itu untuk alasan keamanan. Jadi, setiap kali Anda menginstal paket global, gunakan:Untuk kasus spesifik Anda, itu akan menjadi:
sumber
Sepertinya Anda mengalami masalah izin. Jika Anda menginstal
npm-packages
maka mungkin Anda mendapatkanEACCES
kesalahan saat mencoba menginstal paket secara global. Ini berarti Anda tidak memiliki izin untuk menulis ke direktori yangnpm
digunakan untuk menyimpan paket dan perintah global.Coba jalankan perintah:
sudo chmod u+x -R 775 ~/.npm
dansudo chown $USER -R ~/.npm
atau Anda bisa menjalankannpm
perintah apa sajasudo
, yang seharusnya bisa menyelesaikan masalah Anda.Jika Anda menginstal secara
npm-package
lokal, maka Anda harus berada di direktori proyek lokal Anda dan dapat mencoba menjalankansudo npm install <pkg-name>
perintah untuk menginstal paket yang diperlukan. tujuan penggunaannyasudo
adalah bahwa hal itu akan mengubah izin pemilik Anda sehingga Anda dapat membuat pengguna Anda saat ini diotorisasi untuk menjalankannpm
perintah.Saya sarankan Anda untuk melihat https://docs.npmjs.com/getting-started/fixing-npm-permissions
sumber
Saya mencoba menginstal reaksi expo dan selain dari sudo saya harus menambahkan --unsafe-perm
seperti ini. Ini menyelesaikan Masalah saya
sumber
Jika Anda menghadapi masalah ini di Mac Anda. Ikuti langkah ini
Pertama-tama memeriksa siapa pemilik file ini dengan menggunakan perintah di bawah ini
Anda akan menemukan beberapa file seperti di bawah ini salah satunya di bawah ini
Pernahkah Anda memperhatikan bahwa file di atas adalah milik oleh root, untuk membuat perubahan di dalamnya untuk Anda perlu mengubah pemilik kapal path.
Anda bisa menggunakan cek siapa pengguna saat ini dengan perintah ini
dan kemudian Anda dapat mengubah dengan memanggil perintah ini (cukup ganti nama pengguna Anda dengan nama pemilik)
dalam kasus saya seperti yang Anda tahu pengguna "yamsol" saya akan memanggil perintah ini dengan cara ini
itu dia.
sumber
Hati-hati dengan semua respons yang mengubah pemilik semua direktori di bawah / usr / local Pada dasarnya, jangan mengacaukan sistem linux !!!
Saya pikir cara terbaik adalah menggunakan folder Anda sendiri untuk menemukan semua paket global: https://www.competa.com/blog/how-to-run-npm-without-sudo/
sumber
Anda dapat menginstal npm melalui manajer versi Node atau penginstal Node. Dalam dokumen itu disebutkan:
Karena Anda memiliki kesalahan izin , Anda mungkin menginstal npm melalui penginstal Node dan sekarang Anda harus menginstalnya kembali dengan nvm (manajer versi node).
Untungnya, ini sangat sederhana. Anda bahkan tidak perlu menghapus versi npm atau Node.js. Anda saat ini
Yang perlu Anda lakukan adalah
Instal nvm. Untuk penggunaan OSX atau Linux Node:
Ini membuat folder nvm di direktori home Anda.
Kemudian
Instal npm dan node.js melalui nvm. Untuk melakukannya, telepon saja
Sekarang Anda dapat menginstal paket Anda secara global tanpa menggunakan
sudo
atau mengubah pemiliknode_modules
diusr
folder.sumber
fish
, untuk bekerja dengan baik nvm membutuhkan github.com/fabio-wrapperGunakan perintah ini untuk menginstal
npm
sebagai pengguna sudo:bukannya npm install -g create-react-a pp.
sumber
Saya bisa memperbaiki masalah menggunakan yang berikut ini di mac.
sumber
Untuk pengguna nvm
dan
ganti
v8.9.1
dengan versi simpul yang Anda gunakan.sumber
sudo chown -R $USER home/samuel/.nvm/versions/node/v8.10.0/lib/node_modules
Sepertinya Anda mencoba menginstal paket npm secara global daripada lokal, seperti yang
man npm install
dijelaskan:Secara umum, ketika Anda sedang menyiapkan proyek npm (di antara banyak proyek lain yang bisa Anda miliki), itu bukan ide yang baik untuk menginstal paket pada modul global Node.js (/ usr / local / lib / node_modules), karena log debug Anda disarankan.
Alih-alih menggunakan
-g
, gunakan--save
, yang secara otomatis akan menyimpan paket sebagai ketergantungan untukpackage.json
file Anda :Seperti ini:
Tetapi seperti jawaban lain yang disebutkan, jika Anda akan menggunakan
-g
, Anda harus menggunakansudo
( jika pengguna Anda memiliki hak sudo: lihat / etc / sudoers ) ketika melakukannpm install express-generator -g
, tetapi memang, itu bukan ide yang baik, mungkin menyebabkan masalah izin.MEMPERHATIKAN
Ada petunjuk untuk menginstal
express-generator
dengan-g
opsi, agar skripexpress-cli.js
tersedia di jalur sistem, tetapi Anda dapat menggunakan skrip yang diinstal secara lokal, yang terletak dinode_modules
if jika proyek npm Anda:IMHO, menggunakan
-g
(juga menggunakansudo
) seperti dracone , jika Anda tidak yakin akan konsekuensinya.Untuk informasi lebih lanjut:
sumber
Ini terjadi karena
npm
tidak dapat mengaksesnode_modules
direktori global Anda secara lokal, berjalanmisalnya
memperbaiki masalah, sekarang Anda dapat menjalankan perintah yang Anda jalankan lagi.
sumber
Cukup Anda dapat mengubah pemilik atau hanya menggunakan sudo sebelum Anda memerintahkan seperti ini
sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
( ganti pemilik )atau
itu dia.
sumber
Untuk linux / ubuntu jika perintah
npm install -g <package_name>
Solusi: Instal dengan izin root
sudo npm install <package_name> -g
sumber
Anda memerlukan izin level pengguna super untuk menginstal Bereaksi. Di Linux / Unix, akun superuser umumnya bernama 'root'.
Untuk mendapatkan hak superuser, jalankan saja perintah berikut di terminal Anda:
dan kemudian jalankan perintah untuk menginstal React:
Namun, tim rejim mendorong kita untuk menggunakan perintah berikut daripada menginstal paket global.
sumber
create-react-app
membutuhkan hak akses root untuk diinstal sebagai paket global; jika tidak, Anda tidak akan dapat menginstalnya. Namun, tim rejim mendorong kita untuk menggunakan perintah berikutnpx create-react-app app_name
daripada menginstal paket global.sudo chown -R $ USER / usr / local / lib / node_modules
sumber
Membantu hanya ini:
sumber
Setelah penelitian panjang saya mengerti bahwa tidak diperlukan apa-apa untuk mac OS untuk menginstal sudut cli hanya menggunakan
sudo npm install -g @angular/cli
terminal Anda akan meminta kata sandi memasukkan kata sandi Anda itu akan melanjutkan untuk menginstal cli. Ini berhasil untuk saya.sumber
Mirip dengan jawaban POsha tapi inilah yang bekerja untuk saya di ubuntu 19
Dari tautan ini
https://github.com/inconshreveable/ngrok/issues/429
sumber
Jika Anda menjalankan Linux (yaitu: Lengkungan)
Secara default, perintah ini menginstal paket di bawah / usr / lib / node_modules / npm dan membutuhkan hak akses root untuk melakukannya.
Untuk Mengizinkan instalasi di seluruh pengguna
Untuk mengizinkan instalasi paket global untuk pengguna saat ini, setel
npm_config_prefix
variabel lingkungan. Ini digunakan oleh npm dan benang.Login ulang atau sumber untuk memperbarui perubahan.
Anda juga dapat menentukan
--prefix
parameter untuknpm install
. Namun, ini tidak disarankan, karena Anda harus menambahkannya setiap kali Anda menginstal paket global.Jadi Anda tidak perlu mengunyah izin folder
sumber
Saya dapat menyingkirkan masalah ini dengan menginstal
nvm
, kemudian mengatur node ke versi terbaru.nvm
menggunakancurl
(untuk versi terbaru pergi ke nvm.sh )Setelah mengikuti perintah di atas, Anda akan dapat menginstal react / angular di Ubuntu.
sumber
Gunakan 'sudo npm install xyz' itu akan berfungsi.
sumber
Cukup tambahkan "sudo" sebelum perintah npm. Itu dia.
sumber
Saya telah menggunakan sudo, tetapi itu tidak menyelesaikan masalah, saya telah memperbaiki masalah dengan mengubah izin folder node_modules,
Jika mau, Anda dapat mengganti 777 dengan kode lain jika Anda tidak menetapkan izin untuk semua pengguna / grup.
sumber
Bagi Anda yang masih tidak dapat memperbaiki masalah setelah menggunakan solusi yang disebutkan di atas. Coba ini
Itu harus melakukan triknya, tepuk tangan!
sumber