NPM macet memberikan kesalahan yang sama EISDIR: Operasi ilegal pada direktori, baca pada kesalahan (asli)

102

Saya terjebak dengan kesalahan ini di direktori mana pun saya berada, dan apa yang saya ketik setelah "npm" di cmd.exe. Berikut adalah npm-debug.log:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js' ]
2 info using npm@2.14.12
3 info using node@v4.2.6
4 verbose stack Error: EISDIR: illegal operation on a directory, read
4 verbose stack     at Error (native)
5 verbose cwd C:\Users\me
6 error Windows_NT 6.1.7601
7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js"
8 error node v4.2.6
9 error npm  v2.14.12
10 error code EISDIR
11 error errno -4068
12 error syscall read
13 error eisdir EISDIR: illegal operation on a directory, read
13 error eisdir This is most likely not a problem with npm itself
13 error eisdir and is related to npm not being able to find a package.json in
13 error eisdir a package you are trying to install.
14 verbose exit [ -4068, true ]

Saya telah mencoba dan menghapus / menginstal ulang nodejs beberapa kali, saya bahkan menghapus folder npm dan npm-cache di C: \ Users \ me \ AppData \ Roaming. Saya tidak yakin apa yang salah yang menyebabkan ini. Satu detik itu berfungsi dengan baik, dan sekarang saya tidak bisa menghilangkan kesalahan ini. Penjelasan di log tidak masuk akal, karena memberikan kesalahan ini di direktori mana pun. Saya harus mencatat bahwa menjalankan command prompt sebagai administrator tidak memberikan kesalahan ini. Saya menarik rambut saya pada Jumat malam ini untuk memperbaikinya, bantuan apa pun akan sangat kami hargai!

AnotherMike
sumber
1
Saya menemukan kesalahan ini biasa terjadi ketika orang memperbarui npm, saya bertanya-tanya apakah kesalahan ini dimulai ketika Anda memperbarui npm, atau jika Anda bahkan memperbarui sama sekali?
Clavin
Ini adalah komputer baru jadi saya telah menginstal node dalam beberapa hari terakhir. Saya baru saja melakukan pembaruan dalam mode adminstrator, tetapi tidak beruntung
AnotherMike

Jawaban:

61

Saya mengalami masalah yang sama ketika saya mengubah beberapa pengaturan npm. Saya melakukan kesalahan dengan satu npm config setperintah dan ini menambahkan baris yang merujuk ke direktori yang tidak ada C:\Users\{User}\.npmrc. Setelah saya menghapus baris itu secara manual dari .npmrc, masalahnya hilang.

pengguna1460043
sumber
1
Betapa bodohnya aku? Saya berada di subfolder ahahahah terima kasih.
Sampgun
Saya juga, saya menunjuk cafile ke folder alih-alih file yang sebenarnya, dan setiap npmperintah berhenti bekerja sepenuhnya, tidak ada solusi yang berfungsi selain jawaban Anda, terima kasih!
Giorgio Tempesta
194

EISDIR adalah singkatan dari " Error, Is Directory ". Ini berarti bahwa NPM mencoba melakukan sesuatu pada file tetapi itu adalah direktori . Dalam kasus Anda, NPM mencoba " membaca " file yang merupakan direktori (Baris: 4). Karena operasi tidak dapat dilakukan kesalahan dilemparkan.

Tiga hal yang harus dipastikan di sini.

  1. Pastikan file tersebut ada. Jika tidak, Anda perlu membuatnya. (Jika NPM bergantung pada informasi spesifik dalam file, Anda perlu memiliki informasi itu di sana).
  2. Pastikan itu sebenarnya file dan bukan direktori.
  3. Ini memiliki izin yang tepat. Anda dapat mengubah file agar memiliki semua izin dengan "sudo chmod 777 FILE_NAME". (Hati-hati: Anda memberikan izin Baca, Tulis, dan Jalankan kepada semua orang di file itu)
MauricioLeal
sumber
13
Ini harus menjadi jawaban yang diterima imo karena berisi info tentang masalah serta solusinya
schu34
4
Betapa bodohnya aku? Saya berada di subfolder ahahahah terima kasih.
Sampgun
4
Menghabiskan 3 jam untuk ini. Saya memiliki folder bernama back-button.css. 3 jam saya tidak akan pernah kembali. Berkat Anda, itu bukan 4.
Loke
1
Saya mendapatkan ini menggunakan fs.writeFile - tetapi kesalahan menghentikan program saya untuk meneruskan Nama File sehingga mencoba menulis di folder. Terima kasih.
Nelles
1
Itu benar. Saya menghadapi masalah ini saat menggunakan nodemailer di aplikasi desktop NW.js saat menulis kode untuk pengelola email. Saya juga mencoba membaca direktori daripada membaca file gambar untuk dikirim sebagai lampiran. Terima kasih banyak.
hygull
13

Memiliki masalah yang sama hari ini setelah saya meningkatkan npm saya dari versi 6.4.1 ke versi 6.5.0. Saya memperbaikinya dengan mengunduh penginstal .pkg (disarankan untuk sebagian besar pengguna) dari node.js dan menjalankannya setelah itu.

PeeJee
sumber
Metode yang persis sama membantu saya
DNReNTi
mesin saya menginstal versi npm yang sama tetapi saya masih menghadapi masalah
Gaurav Paliwal
9

Dalam kasus saya, saya mendapatkan "EISDIR: operasi ilegal pada direktori, baca" karena di file .angular-cli.json saya, saya tidak menyediakan jalur lengkap di "skrip:"

Misalnya saya punya

"scripts": [
        "../node_modules/hammerjs",
        "../node_modules/moment"
      ],

Sebenarnya seharusnya begitu

"scripts": [
        "../node_modules/hammerjs/hammer.min.js",
        "../node_modules/moment/min/moment.min.js"
      ],
rampok
sumber
7

Saya memiliki masalah yang sama di Mac OS X (diinstal dengan homebrew), dan .npmrc bukan satu-satunya tempat node menyimpan variabel config. Ada file konfigurasi npmrc glocal di / usr / local / etc yang harus Anda edit menggunakan perintah ini:

sudo nano npmrc

Hapus ca=baris, atau apa pun pengaturan konfigurasinya yang merusak instalasi Anda, simpan file itu, dan coba npm lagi, dan Anda akan melihatnya berfungsi.

rncrtr
sumber
Senang saya bisa membantu.
rncrtr
4

Kesalahan aneh ini terjadi baru-baru ini di mesin OSX saya.

Saya dapat membantu diri saya sendiri dengan cara cepat & kotor dengan berlari:

sudo chmod -R 777 /usr/local/lib/node_modules/

Sesuatu tampaknya telah mengacaukan hak akses semua modul node global.

datayeah
sumber
2

Bagi saya memperbaiki adalah menambahkan garis miring setelah nama direktori

Miniwe
sumber
1

Melakukan uninstall lengkap, termasuk menghapus jalur, dll dan menginstal ulang telah memecahkan masalah, masalah yang sangat aneh sekalipun.

Cara menghapus node.js sepenuhnya dari Windows

AnotherMike
sumber
Pertama-tama saya tidak menyukai jawaban Anda, tetapi saya harus mengakui bahwa hal yang sama terjadi pada saya. Membuat meteorproyek baru --reactmenyebabkan masalah ini, tetapi menghapus proyek dan membuatnya kembali berhasil (OS X).
Hola Soy Edu Feliz Navidad
1

Saya memiliki masalah dengan tegukan. Masalahnya adalah gulp menambahkan ketergantungan ke file sumber saya dan saya pikir npm mencoba membukanya:

{
  "name": "name",
  "version": "2.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "appname": "file://gulp",
    "gulp-concat": "^2.6.1",
    "gulp-electron": "^0.1.3",
    "gulp-shell": "^0.5.2",
    "gulp-uglify": "^2.0.0",
    "gulp-util": "^3.0.7",
    "node-7z": "^0.4.0"
  }
}

Pastikan tidak ada referensi yang aneh di file package.json Anda.

Lanklaas
sumber
1

Periksa untuk memastikan Anda menjalankan npm install dari direktori yang benar.

(File package.json bisa menjadi satu direktori ekstra di bawah, misalnya.)

James Lawruk
sumber
1

Jika masalah Anda terkait dengan pengemas React Native. Coba setel ulang cache dengan react-native start --reset-cache.

Robot Ramah
sumber
1

Dalam kasus saya, saya lupa melewatkan jalur lengkap dari salah satu file yang diminta. Setelah melewati jalur lengkap file berfungsi :)

Rafael Paz
sumber
1

Dalam kasus saya, saya sedang menghadapi masalah ini ketika menginstal create-react-appdi MAC (Mojave OS)dengan perintah berikut:

sudo npm install create-react-app -g

dan mendapat kesalahan seperti ini:

npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/scheduler'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/symbol'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/testing'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/util'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/webSocket'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/symbol'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/testing'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/util'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/webSocket'

Saya telah membaca npm.community yang mencoba menginstal tanpa sudo:

npm install create-react-app -g

dan itu benar-benar memecahkan masalah saya .. !!

Ritesh
sumber
1

Pastikan node_modules (dan root package.json Anda) tidak berisi referensi ke modul "package.json" npm. Menghapus package.json FOLDER dari node_modules memecahkan masalah untuk saya.

Benjamin Piette
sumber
0

Saya mengalami masalah serupa saat menyiapkan kode boilerplate. Itu membaca file bundle.js saya sebagai direktori. Jadi seperti yang dinyatakan di sini. EISDIR berarti direktori dan bukan file. Untuk memperbaiki masalah ini, saya menghapus file dan baru saja membuatnya kembali (awalnya dibuat secara otomatis). Jika Anda tidak dapat menemukan file (karena tersembunyi), cukup gunakan terminal untuk mencari dan menghapusnya.

Pablo DelaCruz
sumber
0

Punya masalah yang sama sampai saya mencoba menghapus folder .git. Berhasil. Saya kira jenis masalah ini dapat memiliki penyebab yang berbeda.

José Augusto Paiva
sumber
0

Saya memiliki masalah yang sama. Ada folder tertaut di direktori saya yang menyebabkan masalah. saya menambahkan folder itu ke daftar abaikan dan kemudian mulai berfungsi dengan baik seperti yang diharapkan.

deyujjal
sumber
0

Saya tahu ini tidak secara khusus menanyakan tentang forever js .. tapi google membawa saya ke sini jadi .. Bagi saya itu sesederhana garis miring.

Saya baru saja mengubah:

forever start -a -l /dev/null/ /var/www/node/my_file.js

Untuk:

forever start -a -l /dev/null /var/www/node/my_file.js

Dan kesalahan itu hilang

Marc Alexander
sumber
0

Pastikan untuk memeriksa versi npm Anda dan apakah ada masalah dengannya. Saya mengalami masalah yang sama pada saat posting ini dan saya menemukan bahwa versi npm saya (6.5) mengalami masalah. Saya harus menghapus dan menginstal ulang npm versi 6.4.1 dan kemudian semuanya mulai berfungsi dengan baik lagi.

smoosh911
sumber
0

Saya memiliki symlink yang rusak ke node_modules di subfolder

Daniel Kukula
sumber
0

Dalam kasus saya, langkah-langkah ini menyelesaikan masalah saya:

  1. npmproses penghentian(CTRL + C)
  2. menghapus seluruh folder
  3. membuat yang baru
  4. berlari npmkembali
BartusZak
sumber
0

Dalam kasus saya, saya menggunakan Windows 10 dalam bahasa Spanyol dan versi ini mencampur nama direktori bahasa Inggris dan Spanyol. Masalah saya adalah direktori desktop memiliki nama ini untuk beberapa perintah dan yang escritoriolainnya. Saya yakin npm tidak bisa menyelesaikan ini. Solusi saya adalah dengan mengubah ke direktori lain mulai dari C: \ berbeda dengan direktori home saya.

JJEA
sumber
0

Saya pernah menghadapi masalah serupa. Saya mengatur cafile menggunakan perintah:

npm config set cafile PATH_TO_CERTIFICATE

Saya dapat menyelesaikan ini dengan menghapus pengaturan file sertifikat, dan pengaturan strict-ssl = false.

Prateek Porwal
sumber
0

Saya memperbaiki masalah ini dengan memindahkan direktori saya dari drive exFAT saya yang tidak mendukung symlinking.

Drive exFat saya dibagi antara osx dan partisi windows bootcamp jadi ketika saya mencoba mengkloning dan menginstal npm proyek saya gagal tetapi tidak pernah menjelaskan bahwa exFAT tidak mendukung fungsi ini.

Ada driver di luar sana yang dapat Anda instal untuk menambahkan kemampuan ke symlink tetapi Anda harus melakukan banyak pengaturan secara manual dibandingkan dengan menjalankan skrip npm sederhana.

Matt
sumber
0

Untuk mac os: Jika diinstal langsung dari situs nodejs, file npmrc akan ditempatkan di / usr / local / etc / npmrc . Hapus saja konfigurasi yang tidak ditentukan dan masalah ini akan diperbaiki.

Rajat Gupta
sumber
0

Saya baru saja menghapus garis

.babel('resources/assets/js/app.js')

untuk laravel 5.6 dengan vue.js. di webpack.mix.js

Данияр Саумбаев
sumber
0

Dalam kasus saya, C:\Users\{user}\AppData\local\npmfile disembunyikan, jadi saya tidak dapat menemukan & menghapus direktori masalah. Butuh waktu HARI untuk menyadari ini!

Jadi, periksa dua kali untuk membuka folder apa pun agar Anda tidak melewatkannya! Berikut tautan untuk melakukan ini jika Anda tidak tahu caranya.

jabarbush.dll
sumber