Node.JS: Mendapatkan kesalahan: [nodemon] Arloji internal gagal: arloji ENOSPC


136

Saya baru saja menginstal Node.jspada Ubuntu 14.04sistem operasi saya untuk pertama kalinya. Saya juga menginstal npm. Langkah selanjutnya dalam proses instalasi saya adalah menginstal nodemon. Ini semua berhasil dengan baik.


Tapi, ketika saya menjalankan nodemondengan mengetikkan nodemon app.jsbaris perintah saya, saya mendapatkan kesalahan berikut ...

[nodemon] 1.8.1 [nodemon] to restart at any time, enterrs [nodemon] watching: *.* [nodemon] startingnode app.js [nodemon] Internal watch failed: watch ENOSPC

Di baris perintah di bawah kesalahan ...

alopex@Alopex:~/Desktop/coding_dojo/week-9/javascript/node/testing_node$ Hello World

Mengapa ini terjadi? Apakah ini perilaku normal untuk nodemon? Jika tidak, bagaimana saya bisa memperbaikinya?


Catatan samping ...

1) app.jsadalah Javascriptfile dengan console.log(111)di dalamnya.
2) nodeversi v0.10.25
3) npmversi 1.3.10
4) nodemonversi 1.8.1
5) ubuntuversi adalah ...

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty

Jawaban:


451

Tampaknya port maks saya tidak dikonfigurasikan dengan benar. Saya menjalankan kode berikut dan berhasil ...

echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Apa yang dilakukan perintah ini adalah menambah jumlah jam tangan yang diizinkan untuk satu pengguna. Secara default angkanya bisa rendah (misalnya 8192). Ketika nodemonmencoba untuk menonton sejumlah besar direktori untuk perubahan itu harus membuat beberapa jam tangan, yang dapat melampaui batas itu.

Anda juga bisa menyelesaikan masalah ini dengan:

sudo sysctl fs.inotify.max_user_watches=582222 && sudo sysctl -p

Tetapi cara ini ditulis terlebih dahulu akan membuat perubahan ini permanen.


6
Bisakah seseorang menjelaskan sedikit lebih banyak tentang apa ini dan menguraikan mengapa itu bisa membantu?
Hinrich

11
@Hinrich, itu hanya dugaan, saya pikir nodejs menyaksikan perubahan sistem file melalui pustaka inotify. Saya pikir ada batas per pengguna untuk jumlah jam tangan maksimum, yang pengaturan ini berubah menjadi nilai yang lebih besar.
ᐅ devrimbaris

2
@devrimbaris Benar!
Erik Åsland

3
Itu baru saja terjadi pada saya setelah pergi dari Ubuntu 14.04 ke Ubuntu 16.04. Solusi Anda juga berhasil untuk saya. Terima kasih
Mestre San

2
Kenakan itu /etc/sysctl.d/90-override.confjika Anda berada di Arch
OverCoder

28

Erik, Anda bisa membunuh semua proses simpul lainnya dengan

pkill -f node

dan kemudian restart server Anda lagi. Itu akan bekerja dengan baik kalau begitu.


7
Downvote karena ini juga menyebabkan windows Visual Studio Code saya membeku.
LexH

ini bekerja seperti pesona ... sampai sekarang! Sekarang tidak efektif, mendapatkan kesalahan yang sama.
kestrel

28

Saat menjalankan node server menunjukkan Kesalahan dan solusi berikut:

nodemon server.js

[nodemon] 1.17.2

[nodemon] untuk memulai kembali kapan saja, masuk rs

[nodemon] menonton: .

[nodemon] mulai node server.js

[nodemon] Arloji internal gagal: arloji / home / aurum304 / jin ENOSPC

sudo pkill -f node

atau

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

19

Sesuai diskusi di sini , ENOSPCberarti Error No more hard-disk space available. Alasan mengapa memori sebanyak ini diperlukan oleh nodemonatau gulp-nodemon(dalam kasus saya) adalah karena ia menonton konten folder yang seharusnya tidak. Untuk memperbaikinya nodemon memiliki ignorepengaturan yang dapat digunakan untuk memberi tahu nodemon apa yang tidak perlu ditonton. Lihatlah contoh konfigurasi nodemon di sini .


Kerja bagus, ini adalah akar masalahnya.
lutaoact

16
[nodemon] Internal watch failed: watch /home/Document/nmmExpressServer/bin ENOSPC
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! nmmexpressserver@0.0.0 start: `nodemon ./bin/www`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the nmmexpressserver@0.0.0 start script.

Ini adalah kesalahan yang saya dapatkan saat menjalankan nodemon ./bin/www.

Solusinya adalah menutup jendela Atom yang memiliki seluruh direktori folder terbuka di jendela proyek.

Saya tidak tahu mengapa, tapi saya mengasumsikan Atom dan nodemon menggunakan proses serupa untuk menonton file / folder.


2
Persis itulah masalah saya. Saya senang meluncurkan atom dari direktori instalasi proyek. Saya menutup atom, meluncurkannya dari dir yang berbeda dan masalahnya hilang.
Ya

Dalam kasus saya, hal yang sama terjadi pada Sublime di Ubuntu. Ketika saya menutup IDE, saya bisa menjalankannya dengan benar. Ada tips tentang itu?
Shad

Saya belum mencoba mereplikasi untuk melihat apakah sudah diperbaiki.
codeinaire

Terima kasih. Milik saya dapat bekerja setelah saya menutup Gitkraken. Ini masalah aneh. Jadi itu berarti kita tidak dapat memiliki dua proses memonitor folder yang sama?
Zhang LongQI

Itu adalah klien Nextcloud di sini - yang menggunakan satu ton jam tangan yang tidak sah. Terima kasih, kalian semua!
Bill McGonigle

8

Coba ini....

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p​

Akan menantang bekerja


1
Saya suka sifat pemberontak dari pembangkangan ini
SimplyKnownAsG

7

Tambahkan nodemon.jsonfile konfigurasi di folder root Anda dan tentukan pola abaikan misalnya:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Perhatikan bahwa secara default .git, node_modules, bower_components, .nyc_output, coveragedan.sass-cache diabaikan sehingga Anda tidak perlu menambahkannya ke konfigurasi Anda.

Penjelasan: Kesalahan ini terjadi karena Anda melebihi jumlah maksimum pengamat yang diizinkan oleh sistem Anda (yaitu nodemontidak memiliki lebih banyak ruang disk untuk menonton semua file - yang mungkin berarti Anda menonton bukan file penting). Jadi, Anda mengabaikan file yang tidak penting yang tidak Anda pedulikan perubahannya misalnya output build atau kasus uji.


6
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Ini berhasil untuk saya


1
Silakan tambahkan penjelasan tentang bagaimana ini menjawab pertanyaan.
Jason Aller

Bekerja dengan baik
Rohit Parte

3

dalam kasus saya menutup kode studio visual kemudian memulai server melakukan trik

Sistem operasi - ubuntu 16,4 lts

versi node.js - 8.11.1

versi npm - 6.0.0


Tampaknya dia tidak menggunakan studio visual.
Julien Revault d'A ...

1
Meskipun ini tidak langsung menjawab pertanyaan (karena pertanyaan itu tidak melibatkan VS Code), ini memang memecahkan masalah saya.
Chasen Bettinger

2

Alih-alih menentukan daftar direktori yang harus diabaikan (misalnya negatif), Anda juga dapat menentukan daftar direktori yang harus diperhatikan (mis. Positif):

nodemon --watch dir1 --watch dir2  dir1/examples/index.js

Dalam kasus khusus saya, saya memiliki satu direktori yang ingin saya tonton dan sekitar sembilan yang ingin saya abaikan, jadi menetapkan '--watch' jauh lebih sederhana daripada menetapkan '--ignore'


0

Saya memiliki kesalahan yang sama, tetapi di Ubuntu 14,04 di dalam Windows 10 (Bash di Ubuntu pada Windows). Yang saya lakukan untuk mengatasi kesalahan adalah memperbarui pembaruan Creators, yang kemudian memungkinkan saya untuk menginstal versi 16.04 dari Ubuntu bash dan kemudian setelah menginstal versi terbaru dari node (dengan langkah-langkah ini ) saya menginstal juga versi terbaru dari npm dan kemudian nodemon mulai bekerja dengan baik.


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.