Kesalahan: EACCES: izin ditolak

106

Saya menjalankan npm install lodash tetapi muncul Error: EACCES: izin ditolak kesalahan. Saya tahu ini adalah masalah izin tetapi sejauh yang saya tahu, izin sudo tidak diperlukan untuk menginstal modul node secara lokal. Jika saya menjalankannya dengan sudo, itu akan diinstal di dalam folder ~ / node_modules. drwxrwxr-x adalah izin file dari folder yang ada. Saya tidak tahu apa yang mungkin salah.

Di bawah ini adalah pesan kesalahannya.

npm ERR! tar.unpack untar error /home/rupesh/.npm/lodash/4.13.1/package.tgz
npm ERR! Linux 3.13.0-88-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "lodash"
npm ERR! node v4.3.1
npm ERR! npm  v2.14.12
npm ERR! path /home/rupesh/node_modules/lodash
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR!      'FSReqWrap.oncomplete (fs.js:82:15)' ] }
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!     /home/rupesh/Desktop/es6/npm-debug.log
xruptronics
sumber
adalah pemilik node_modulesroot folder ?
AJS
Folder node_module belum dibuat di dalam folder tempat saya akan menginstal lodash.
xruptronics
apakah Anda menjalankan npm install di direktori / home / rupesh / atau direktori lain?
AJS
jalur folder tempat saya menjalankan npm install adalah ~ / Desktop / es6
xruptronics
apa output dari ls -l ~/Desktop | grep es6pastikan Anda adalah pemilik direktori es6
AJS

Jawaban:

86

Perintah ini memperbaiki masalah. Ini berhasil untuk saya:

sudo npm install -g --unsafe-perm=true --allow-root
Saniya syed qureshi
sumber
Untuk siapa pun seperti saya, meskipun perintah ini tampaknya berfungsi pada saat penulisan, untuk Node v10.10.0saya mendapat kesalahan berikut: "npm ERR! Tidak dapat menginstal / var / www / project: Nama paket tidak ada"
Wayne Smallman
1
Bendera --unsafe-perm = true --allow-root bekerja untuk kita menggunakan node v10.15.0 untuk menginstal sebagai root pengguna aplikasi yang ada di mana node-sass tidak akan diinstal. Perintah tepat yang kami gunakan untuk menginstal node-sass ke direktori lokal folder node_modules adalah # npm install --save-dev --unsafe-perm = true --allow-root node-sass @ latest
Peter Edwards
Anda dapat menggunakan root untuk menyelesaikan masalah (meskipun ini tidak disarankan).
Chris Marotta
Saya bisa membuatnya berfungsi dengan menggunakan flag-flag itu jadi jawabannya adalah: sudo npm install -g --unsafe-perm = true --allow-root <package-name> @ <version-name>
Frank Hu MSFT
48

Saya memiliki masalah yang sama dengan instalasi server webpack secara global, Gunakan langkah-langkah dari Url ini Memecahkan masalah saya, saya bekerja untuk Anda.

Langkah-langkah yang disebutkan di atas Ada: Cadangkan komputer Anda sebelum memulai.

Buat direktori untuk instalasi global:

1. mkdir ~/.npm-global

Konfigurasikan npm untuk menggunakan jalur direktori baru:

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

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

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

Kembali ke baris perintah, perbarui variabel sistem Anda:

4.source ~/.profile

Pengujian: Unduh paket secara global tanpa menggunakan sudo.

npm install -g jshint

Alih-alih langkah 2-4, Anda dapat menggunakan variabel ENV yang sesuai (misalnya jika Anda tidak ingin mengubah ~ / .profile):

NPM_CONFIG_PREFIX=~/.npm-global
Vishal Patel
sumber
1
bekerja di Mojave. Terima kasih banyak setelah 4-5 jam pemecahan masalah, ini berhasil!
Johnny
13

Saya punya masalah di Linux. saya menulis

chown -R myUserName ./* 

di folder proyek saya.

Sergey
sumber
8
Sangat tidak direkomendasikan. Itu menyentuh semua direktori Anda dan menghapus hak root pada salah satunya. Jika beberapa hal perlu disetel sebagai root, ini akan menghancurkan konfigurasi Anda saat ini.
Patrick Da Silva
Saya setuju @PatrickDaSilva. Ini mengacaukan seluruh server saya ..
Simon Degn
12

Membuat package.json menggunakan npm init memecahkan masalah saya.

xruptronics
sumber
Tetapi saya tidak yakin mengapa file package.json diperlukan saat menginstal modul node karena file package.json tidak diperbarui atau digunakan dalam kasus saya karena saya belum menggunakan --save atau --save-dev atau perintah serupa.
xruptronics
ini aneh. Saya pikir ada sesuatu yang kacau di npm conf Anda dan melakukan init reset, bagaimanapun itu harus menjadi misteri selamanya karena saya tidak dapat menemukan satu pun referensi untuk masalah serupa di tempat lain.
AJS
Memiliki masalah serupa dengan npm 6.9.0 dan ini juga berhasil untuk saya.
Chris Marotta
8

Dari apa yang dapat saya lihat di log yang Anda posting:

npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',

direktori /home/rupesh/node_modules/tidak memiliki izin yang diperlukan untuk membuat direktori jadi jalankan chown -r rupesh:rupesh /home/rupesh/node_modules/ini harus menyelesaikannya.

AJS
sumber
Melakukan chown -R rupesh: rupesh / home / rupesh / node_modules / dan menjalankan npm install lodash lagi menginstal lodash di dalam folder ~ / node_module. Tapi kali ini tidak menimbulkan error, tapi itu bukan tempat yang ingin saya instal.
xruptronics
ya saya tahu Anda harus membuat proyek di direktori home Anda daripada Desktop. npm karena alasan tertentu menginstal modul Anda /home/rupesh/node_moduleskarena beberapa alasan. Cara apa pun yang bekerja di direktori home Anda seharusnya ideal
AJS
Saya pikir ~ / Projects / es6 setara dengan ~ / Desktop / es6 struktur bijaksana. Yang saya alami kesulitan mencari tahu adalah mengapa node_modules tidak dibuat di dalam folder es6 dan mengapa modul lodash (atau apa pun) tidak dipasang di dalamnya. Saya belum pernah menghadapi masalah ini sebelumnya tetapi apa yang salah hari ini, itulah yang ingin saya cari tahu.
xruptronics
yup saya membaca dua komentar saya sebelumnya dan menyadari kebodohan :), baik saya melihat sekeliling dan tidak dapat menemukan orang lain yang memiliki masalah yang sama. Apakah kode Anda dapat menemukan loadashmodul ?.
AJS
7

Itu tidak memiliki izin menulis untuk others(rx). Coba dengan

chmod a+w <folder>

dan ulangi.

Juanjo Salvador
sumber
2
Tidak chownmemiliki -ropsi untuk mencegah penggunaannya di setiap folder node_modules?
DrakaSAN
@Juanjo Salvador Itu tidak berhasil. Itu membuat kesalahan yang sama.
xruptronics
@DrakaSAN ya, chown memiliki opsi rekursif.
Juanjo Salvador
7

Ini langsung menyelesaikan masalah saya - mac Mojave 10.14.6 - PhpStorm.

Kesalahan Penolakan Tidak Tertangani: EACCES: izin ditolak, mkdir '/Users/myname/.npm/_cacache/index-v5/fb/5a'

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

Posting asli: https://stackoverflow.com/a/50639828

ulittle
sumber
6

Coba berikan semua izin ke folder proyek Anda dengan perintah di bawah ini

sudo chmod -R 777 /yourProjectDirectoryName

lari dengan

sudo npm install lodash
Raj Gohel
sumber
Ini adalah solusi jr
Pablo Papalardo
Anda bahkan mungkin tidak perlu 777. Bagi saya masalahnya hanya # terlalu rendah. (775 memperbaikinya.)
Andrew
"Mengatur 777 izin ke file atau direktori berarti itu akan dapat dibaca, ditulis dan dieksekusi oleh semua pengguna dan dapat menimbulkan risiko keamanan yang besar." - linuxize.com/post/what-does-chmod-777-mean
MillerC
4

FWIW Saya mengalami gejala yang sama, tetapi dengan kemasan yang berbeda. Membuat package.jsondan menjalankan npm inititu tidak memecahkan masalah saya.

Pada sistem ini, tampaknya folder baru di lokasi ini sedang dibuat dengan izin root. Selama npm install, folder baru dibuat. Hal ini menyebabkan instalasi npm gagal di tengah jalan, bahkan dengan sudo.

Solusinya adalah menjalankan npm install appdi lokasi berbeda tanpa root umask.

Courtney Schwartz
sumber
4

Masalah terkait:

Terbuang 3 jam selama beberapa hari.

Pada mesin AWS EC2, di bawah ini berfungsi:

sudo chown -R $(whoami) /home/ubuntu/.cache
sudo chown -R $(whoami) /home/ubuntu/.config
sudo chown -R $(whoami) /home/ubuntu/.local
sudo chown -R $(whoami) /home/ubuntu/.npm
sudo chown -R $(whoami) /home/ubuntu/.pm2

Semoga membantu.

Manohar Reddy Poreddy
sumber
3

Saya memecahkan masalah ini dengan mengubah izin direktori npm saya. Saya pergi ke direktori global npm untuk saya

/home/<user-name>

Saya pergi ke direktori ini dengan memasukkan perintah ini

cd /home/<user-name>

dan kemudian mengubah izin folder .npm dengan memasukkan perintah ini.

sudo chmod -R 777 ".npm"

Itu bekerja seperti pesona bagi saya. Tetapi ada kelemahan keamanan dengan hal ini, yaitu direktori paket global Anda dapat diakses oleh semua level.

Aniruddh Agarwal
sumber
Mengapa Anda mengizinkan seluruh dunia untuk mengakses folder khusus ini?
egdavid
2

Pertama instal tanpa -g (global) di root. Setelah mencoba menggunakan -g (global), saya berhasil.

Renjith
sumber
Bekerja!! Di Mac memindahkan folder kode saya ke folder root saya: HardDrive /, dan "npm install" berjalan dengan sempurna. Kemudian saya memindahkan folder kode saya kembali ke tempat yang saya inginkan di dalam HardDrive / users / myUserName / Projects / code, menjalankan "npm install" lagi, dan kali ini berhasil.
Josh
2

LUBUNTU 19.10 / Masalah yang sama berjalan: $ npm start

dump: Kesalahan: EACCES: izin ditolak, buka '/home/simon/xxx/pagebuilder/resources/scripts/registration/node_modules/.cache/@babel/register/.babel.7.4.0.development.json' di Object. fs.openSync (fs.js: 646: 18) di Object.fs.writeFileSync (fs.js: 1299: 33) saat menyimpan (/ home / simon / xxx / pagebuilder / resources / scripts / Registration / node_modules / @ babel / register / lib / cache.js: 52: 15) di _combinedTickCallback (internal / process / next_tick.js: 132: 7) di process._tickCallback (internal / process / next_tick.js: 181: 9) di Function.Module.runMain (module.js: 696: 11) di Object. (/home/simon/xxxx/pagebuilder/resources/scripts/registration/node_modules/@babel/node/lib/_babel-node.js:234:23) di Module._compile (module.js: 653: 30) di Object .Module._extensions..js (module.js: 664: 10) di Module.load (module.js: 566: 32)

Sepertinya pengguna default saya (administrator) tidak memiliki hak atas direktori modul-node.

Ini memperbaikinya untuk saya!

$ sudo chmod a+w node_modules -R ## from project root

Simon P.
sumber
2

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 ~ / .profile dan tambahkan baris ini:

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

Di baris perintah, perbarui variabel sistem Anda:

source ~/.profile

Uji menginstal paket secara global tanpa menggunakan sudo, Semoga membantu

AyushKatiyar
sumber
1

Berikut solusi untuk pengguna GNU / Linux (Debian) (Ganti USERNAME dengan nama pengguna Anda ):

sudo chown -R $USER:$(id -gn $USER) /home/USERNAME/.config

J-Snor
sumber
0

Hapus folder dist dan ini menyelesaikan masalah saya !!

Hekmat
sumber
0

Pada Windows ternyata port tersebut sudah digunakan oleh IIS.

Menghentikan IIS (Klik kanan, Keluar), menyelesaikan masalah.

Atron Seige
sumber
0

Ubah saja pemilik node_modulesdirektori global menjadi pengguna Anda:

sudo chown -R $USER:$GROUP /usr/local/lib/node_modules
didil
sumber
0

Saya mencoba sebagian besar saran ini tetapi tidak ada yang berhasil. Kemudian saya lari npm clean-installdan itu menyelesaikan masalah saya.

MoKG
sumber
0

node merekomendasikan eksekusi berikut ini:

 sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config

Jika Anda mengeksekusi

npm config

Anda akan melihat sesuatu seperti ini

│                   npm update check failed                   │
│             Try running with sudo or get access             │
│            to the local update config store via             │
│ sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config │

Itu berhasil untuk saya.

Manasvini Ganesh
sumber
0

kita perlu memberikan izin menulis ke folder itu menggunakan:

sudo chmod 777 path-to-directory

path-to-directory dalam proyek ini adalah (/ home / ubuntu / blog / server)

Muhammad Fazeel
sumber
0

Jika Anda mendapatkan error seperti di bawah ini

Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/<PackageName>/vendor'

Saya sarankan menggunakan perintah di bawah ini untuk menginstal paket global Anda

sudo npm install -g <PackageName> --unsafe-perm=true --allow-root
Nisharg Shah
sumber
-3

Jalankan perintah ini dan masalah akan terpecahkan!

sudo chmod -R 777 /usr/local/bin
sudo chmod -R 777 /usr/local/lib/node_modules
Nitin Jha
sumber
Untuk /usr/localdan semua subdirektori, izin harus rwxr-xr-xdimiliki dan dimiliki oleh root. Pengguna sistem dapat membaca dan mengeksekusi dalam struktur dir ini, tetapi tidak dapat mengedit, membuat file. Karena itu, jawaban Anda menyarankan pemberian izin kepada semua orang. Dan, tanpa menjelaskan bagaimana dan apa yang akan terpengaruh, atau mengapa masalah itu akan diselesaikan.
Kuliraj