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
Erik Åsland
sumber

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.

Erik Åsland
sumber
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.

pawanpandey392
sumber
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
Mani Abi Anand
sumber
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 .

Zubair Alam
sumber
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.

codeinaire
sumber
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

MD SHAYON
sumber
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.

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

Ini berhasil untuk saya

iClass Chima
sumber
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

Vishal Verma
sumber
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'

vt5491
sumber
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.

Šimon Hrabec
sumber
0

Jika sistem operasinya adalah Linux maka gunakan saja itu akan berfungsi

 sudo npm run server
Siddhartha Mukherjee
sumber