Node.JS: Hata alma: [nodemon] Dahili izleme başarısız oldu: ENOSPC'yi izleyin


136

Sadece yüklü Node.jsbenim üzerinde Ubuntu 14.04ilk kez işletim sistemi. Ben de kurdum npm. Kurulum sürecimdeki bir sonraki adım kurulumdu nodemon. Her şey yolunda gitti.


Ama komut nodemonsatırımı yazarak çalıştırdığımda nodemon app.jsşu hatayı alıyorum ...

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

Hatanın altındaki komut satırında ...

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

Bu neden oluyor? Bu nodemon için normal bir davranış mı? Değilse, nasıl düzeltebilirim?


Yan notlar ...

1) içinde app.jsbulunan bir Javascriptdosyadır console.log(111).
2) nodeversiyon v0.10.25
3) npmversiyon 1.3.10
4) nodemonversiyon 1.8.1
5) ubuntuversiyon ...

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

Yanıtlar:


452

Görünüşe göre maksimum bağlantı noktalarım doğru yapılandırılmamış. Aşağıdaki kodu çalıştırdım ve işe yaradı ...

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

Bu komutun yaptığı şey, tek bir kullanıcı için izin verilen saat sayısını artırmaktır. Varsayılan olarak sayı düşük olabilir (örneğin 8192). Ne zaman nodemonçalışır değişiklikler için dizinleri çok sayıda izlemek için bu sınırı aşan hangi birkaç saatler oluşturmak zorundadır.

Bu sorunu şu şekilde de çözebilirsiniz:

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

Ancak ilk yazılma şekli bu değişikliği kalıcı kılacaktır.


6
Birisi bunun ne yaptığını biraz daha açıklayabilir ve neden yardımcı olabileceğini ayrıntılandırabilir mi?
Hinrich

11
@Hinrich, bu sadece bir tahmin, sanırım nodejs inotify kitaplığı aracılığıyla dosya sistemi değişikliklerini izliyor. Sanırım maksimum saat sayısı için kullanıcı başına bir sınır var ve bu ayar daha büyük bir değere dönüşüyor.
ᐅ devrimbaris

2
@devrimbaris Doğru!
Erik Åsland

3
Ubuntu 14.04'ten Ubuntu 16.04'e geçtikten sonra benim başıma geldi. Çözümünüz benim için de çalıştı. Teşekkürler
Mestre San

2
Put bu konuda /etc/sysctl.d/90-override.confsize Arch iseniz
OverCoder

28

Erik, diğer tüm düğüm süreçlerini şu şekilde öldürebilirsin:

pkill -f düğümü

ve ardından sunucunuzu yeniden başlatın. O zaman gayet iyi çalışacak.


7
Olumsuz oy çünkü bu, Visual Studio Code pencerelerimin donmasına da neden oldu.
LexH

bu bir cazibe gibi çalışıyordu ... şimdiye kadar! Şimdi etkisiz, aynı hatayı alıyor.
kerkenez

28

Düğüm sunucusu çalıştırıldığında aşağıdaki Hataları ve çözümleri gösterir:

nodemon server.js

[düğüm] 1.17.2

[nodemon] herhangi bir zamanda yeniden başlatmak için şunu girin: rs

[nodemon] izliyor: .

[nodemon] başlıyor node server.js

[nodemon] Dahili izleme başarısız oldu: watch / home / aurum304 / jin ENOSPC

sudo pkill -f node

veya

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

19

Üzerinde tartışma gereği burada , ENOSPCaraçlarla Error No more hard-disk space available. nodemonVeya gulp-nodemon(benim durumumda) için bu kadar bellek gerekmesinin nedeni , olmaması gereken bir klasörün içeriğini izliyor olmasıdır. Bu nodemon'u düzeltmek ignoreiçin nodemon'a neyi izlemeyeceğini söylemek için kullanılabilecek bir ayar vardır. Burada nodemon örnek yapılandırmasına bir göz atın .


İyi iş, asıl neden bu.
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.

Bu koşarken aldığım hata nodemon ./bin/www.

Çözüm, proje penceresinde tam bir klasör dizini açık olan bir Atom penceresini kapatıyordu .

Nedenini bilmiyorum ama Atom ve nodemon'un dosyaları / klasörleri izlemek için benzer işlemler kullandığını varsayıyorum.


2
Bu benim sorunumdu. Atom'u projenin kurulum dizininden başlatmak zorunda kaldım. Atomu kapattım, farklı bir dizinden başlattım ve sorun ortadan kalktı.
Ya.

Benim durumumda, Ubuntu'daki Sublime'da da aynısı oluyordu. IDE'yi kapattığımda, onu düzgün bir şekilde çalıştırabilirim. Bununla ilgili herhangi bir ipucu var mı?
Shad

Düzeltilip düzeltilmediğini görmek için kopyalamaya çalışmadım.
kodinaire

Teşekkürler. Gitkraken'i kapattıktan sonra benimki çalışabilir. Bu garip bir problem. Yani bu, aynı klasörü izleyen iki işlemimiz olamayacağı anlamına mı geliyor?
Zhang LongQI

Bir ton inotify saati kullanan Nextcloud müşterisiydi. Hepinize teşekkürler!
Bill McGonigle

8

Bunu dene....

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

Meydan okurcasına çalışacak


1
Bu meydan okumanın asi doğasını seviyorum
SimplyKnownAsG

7

nodemon.jsonKök klasörünüze bir yapılandırma dosyası ekleyin ve yok sayma kalıpları belirtin, örneğin:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Varsayılan olarak o Not .git, node_modules, bower_components, .nyc_output, coverageve .sass-cachesize yapılandırmasına eklemek için gerek kalmaz dikkate alınmaz.

Açıklama: Bu hata, sisteminiz tarafından izin verilen maksimum izleyici sayısını aştığınız için meydana gelir (yani nodemon, tüm dosyaları izlemek için daha fazla disk alanı yoktur - bu muhtemelen önemli olmayan dosyaları izlediğiniz anlamına gelir). Böylece, önemli olmayan dosyaları, örneğin derleme çıktısı veya test senaryoları gibi, içlerindeki değişikliklerle ilgilenmediğinizi göz ardı edersiniz.


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

Bu benim için çalıştı


1
Lütfen bunun soruyu nasıl yanıtladığına dair bir açıklama ekleyin.
Jason Aller

Düzgün çalıştı
Rohit Parte

3

benim durumumda visual studio kodunu kapattıktan sonra sunucuyu başlatmak hile yaptı

İşletim sistemi - ubuntu 16.4 lts

node.js sürümü - 8.11.1

npm sürümü - 6.0.0


Görünüşe göre görsel stüdyo kullanmıyordu.
Julien Revault d'A ...

1
Bu soruyu doğrudan yanıtlamasa da (çünkü soru VS Code içermiyor), bu benim sorunumu çözdü.
Chasen Bettinger

2

Yok sayılacak dizinler listesi belirtmek yerine (örn. Negatif), izlenecek dizinlerin bir listesini de belirtebilirsiniz (örn. Pozitif):

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

Benim özel durumumda, izlemek istediğim bir dizine sahiptim ve göz ardı etmek istediğim yaklaşık dokuz dizin vardı, bu nedenle '--watch' belirtmek, '--ignore' belirtmekten çok daha kolaydı


0

Aynı hatayı aldım, ancak Windows 10 içindeki Ubuntu 14.04'te (Windows'ta Ubuntu'da Bash). Hatanın üstesinden gelmek için tek yaptığım, Creators güncellemesini güncellemekti, bu da Ubuntu bash'ın 16.04 sürümünü yüklememe izin verdi ve daha sonra düğümün en yeni sürümünü yükledikten sonra ( bu adımlarla) ayrıca en yeni npm sürümünü ve ardından nodemon'u yükledim. düzgün çalışmaya başladı.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.