npm install -g kurang tidak berfungsi: EACCES: izin ditolak

203

Saya mencoba untuk mengatur lebih sedikit pada phpstorm sehingga saya dapat mengkompilasi file .less ke .css pada save. Saya telah menginstal node.js dan langkah selanjutnya (menurut https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html ) ini menjalankan perintah ini di terminal

npm install -g less

Namun ketika saya melakukan ini saya mendapatkan kesalahan ini

  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
   └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
   └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
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!     at Error (native)
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! Please include the following file with any support request:
npm ERR!     /Users/brentscholl/npm-debug.log

Saya noob lengkap di sini dan tidak yakin apa yang harus dilakukan selanjutnya. Bantuan apapun akan sangat dihargai!

xslibx
sumber

Jawaban:

354

Tidak disarankan menggunakan sudo. Mungkin memberi Anda masalah izin nanti. Sementara cara di atas berfungsi, saya bukan penggemar mengubah folder yang dimiliki oleh root agar dapat ditulis untuk pengguna, meskipun mungkin hanya masalah dengan beberapa pengguna. Untuk mengatasinya, Anda dapat menggunakan grup, dengan 'pengguna npm' tetapi itu juga merupakan biaya administrasi yang lebih besar. Lihat di sini untuk opsi-opsi untuk berurusan dengan izin dari dokumentasi: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Saya akan memilih opsi 2:

Untuk meminimalkan kemungkinan kesalahan izin, Anda dapat mengonfigurasi npm untuk menggunakan direktori lain. Dalam contoh ini, itu akan menjadi direktori tersembunyi di folder rumah Anda.

Buat direktori untuk instalasi global:

 mkdir ~/.npm-global

Konfigurasikan npm untuk menggunakan jalur direktori baru:

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

Buka atau buat file ~ / .profile dan tambahkan baris ini:

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

Kembali ke baris perintah, perbarui variabel sistem Anda:

 source ~/.profile

Uji: Unduh paket secara global tanpa menggunakan sudo.

npm install -g jshint

Jika masih menunjukkan kesalahan menjalankan izin (mac os):

sudo chown -R $USER ~/.npm-global   

Ini berfungsi dengan instalasi ubuntu default:

sudo apt-get install nodejs npm

Saya sarankan nvmjika Anda ingin lebih fleksibel dalam mengelola versi: https://github.com/creationix/nvm

Pada pembuatan bir buatan MacOS, harus berfungsi tanpa di sudoluar kotak jika Anda menggunakan npmversi terbaru . Nikmati :)

Vincent Gerris
sumber
Kepala - pada Ubuntu 18.04 Saya harus keluar dan masuk kembali sebelum perubahan diterapkan secara otomatis ke semua jendela terminal baru.
Alexander Nied
Alexander, apakah Anda memastikan Anda menggunakan perintah sumber? Itu harus mengurus pengaturan variabel lingkungan yang tepat, logout tidak diperlukan (tetapi berfungsi).
Vincent Gerris
ini tidak berhasil menginstal $ npm -g jshint npm ERR! tulis setelah selesai npm ERR! Log lengkap dari proses ini dapat ditemukan di: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith
3
Terima kasih untuk ini "On MacOS use brew"
Bijender Singh Shekhawat
110

Jalankan perintah ini di jendela terminal (catatan: JANGAN ganti bagian $ USER ... itu perintah linux untuk mendapatkan pengguna Anda!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules
Vagner Rodrigues
sumber
7
Apakah ide yang bagus untuk menjadikan diri Anda sendiri pemilik barang /usr? Bagaimana jika orang lain ingin menginstal barang-barang simpul?
Markus
6
Bekerja untuk saya pada MacOS High Sierra, saya hanya perlu satu dari tiga perintah: sudo chown -R $USER /usr/local/lib/node_modules. @ Markus Itu benar, tapi tentu saja tidak masalah jika Anda hanya memiliki satu pengguna.
Fabian von Ellerts
@FabianvonEllerts Nah, masih lebih mudah untuk secara tidak sengaja menghapus file sistem, karena Anda tidak akan memerlukan sudo lagi ... Saya hanya akan mengikuti praktik terbaik bahkan ketika sendirian, tapi itu terserah Anda tentu saja.
Markus
Saya bersama Mark, kecuali jika Anda memiliki satu pengguna (dan itupun) Anda tidak ingin memiliki / direktori sub dimiliki oleh satu pengguna, dalam hal itu, lebih baik gunakan grup. Tapi mungkin lebih baik, gunakan saja minuman seperti yang saya sebutkan dalam jawaban saya, itu akan bekerja tanpa root di luar kotak.
Vincent Gerris
11

Instal ulang node dan npm dengan Node Version Manger (sesuai yang tertulis dalam dokumentasi npm ) untuk menghindari kesalahan izin:

Di OSX:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

atau ikuti artikel ini:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

Pengguna Windows harus menginstal nvm-windows . Untuk bantuan lebih lanjut bagaimana menginstal nvm, rujuk nvm readme .

Kemudian pilih misalnya:

nvm install 8.0.0
nvm use 8.0

Sekarang Anda dapat mencoba lagi:

npm install -g less
gazdagergo
sumber
1
Saya menggunakan ini untuk memecahkan masalah izin menginstal paket di CodeSandbox.
Keith Taylor
11

Mac OS X Answer

Anda tidak memiliki akses tulis ke direktori node_modules

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

Tambahkan Pengguna Anda ke direktori dengan akses tulis

  1. Buka folder yang berisi node_modules

    buka / usr / local / lib /

  2. Lakukan cmd + I pada folder node_modules untuk membuka dialog izin
  3. Tambahkan pengguna Anda untuk memiliki akses baca dan tulis di bagian berbagi dan izin masukkan deskripsi gambar di sini
Roderick Jonsson
sumber
Solusi termudah dan paling efisien untuk MacOS
itsazzad
8

masukkan deskripsi gambar di siniGunakan sudo -i untuk beralih ke $ root, kemudian jalankan npm install -g xxxx

pengguna3393929
sumber
7

Untuk lingkungan mac saya

sudo chown -R $USER /usr/local/lib/node_modules

pecahkan masalah

Asadut Zaman
sumber
Saya percaya ini sudah tercakup dalam jawaban @ VagnerRodrigues di atas.
entpnerd
Ya itu, saya baru saja menyebutkan untuk lingkungan mac
Asadut Zaman
3

Tekan saja perintah di bawah ini:

sudo chown -R $USER /usr/local/lib/node_modules

Mari kita jabarkan:

sudo

berarti kita menjalankan perintah ini sebagai root, sistem pengguna super. Ini karena kami tidak memiliki izin untuk menulis ke folder itu, tetapi root akan dapat memperbaiki izin apa pun. Perintah ini juga berarti sistem akan meminta kata sandi Anda untuk mengonfirmasi.

dikunyah

adalah perintah yang kami gunakan untuk mengubah pemilik file atau folder. Kami mengatur opsi -R untuk mengubah pemilik secara berulang, jadi kami juga mendapatkan akses pemilik ke semua file yang sudah ada di sana.

$ PENGGUNA

adalah variabel lingkungan yang ditetapkan secara otomatis ke nama pengguna Anda.

Dan bagian terakhir adalah jalur folder.

Menjalankan jalur ini akan menjadikan folder milik Anda, sehingga Anda dapat dengan aman menjalankan perintah install -g npm!

Akash Singh Sengar
sumber
0

Saya telah mencoba semua solusi yang disarankan tetapi tidak ada yang berhasil.

Saya menggunakan macOS Catalina 10.15.3

Pergi ke / usr / lokal /

Pilih folder bin> Dapatkan Info

Tambahkan pengguna Anda ke Berbagi & Izin. Baca & Tulis Izin. masukkan deskripsi gambar di sini

Dan pergi ke terminal dan jalankan npm install -g @ ionic / cli

Itu telah membantu saya.

Gohar SUltan
sumber
-1

Di linux pastikan mendapatkan semua otoritas dengan:

sudo su
kira-kira
sumber
-3

Halo Saya menggunakan Ubuntu 18 dan saya sudah mendapatkan pesan kesalahan ini ketika menginstal Prisma, lalu saya tambahkan saja sudodi depan

sudo npm i -g prisma
UA_
sumber