Node.JS: Fehler: [nodemon] Interne Überwachung fehlgeschlagen: ENOSPC überwachen


135

Ich habe gerade zum ersten Mal Node.jsauf meinem Ubuntu 14.04Betriebssystem installiert. Ich habe auch installiert npm. Der nächste Schritt in meinem Installationsprozess war die Installation nodemon. Das hat alles gut geklappt.


Aber, wenn ich laufe nodemondurch Eingabe nodemon app.jsin meinem Kommandozeile, erhalte ich die folgende Fehlermeldung ...

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

In der Kommandozeile unter dem Fehler ...

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

Warum passiert dies? Ist das normal für nodemon? Wenn nicht, wie kann ich das beheben?


Randnotizen ...

1) app.jsist eine JavascriptDatei mit console.log(111)darin.
2) nodeVersion ist v0.10.25
3) npmVersion ist 1.3.10
4) nodemonVersion ist 1.8.1
5) ubuntuVersion ist ...

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

Antworten:


450

Es scheint, dass meine maximalen Ports nicht richtig konfiguriert wurden. Ich habe den folgenden Code ausgeführt und es hat funktioniert ...

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

Mit diesem Befehl wird die Anzahl der für einen einzelnen Benutzer zulässigen Uhren erhöht. Standardmäßig kann die Anzahl niedrig sein (z. B. 8192). Wannnodemon versucht wird, eine große Anzahl von Verzeichnissen auf Änderungen zu überwachen, müssen mehrere Uhren erstellt werden, die diese Grenze überschreiten können.

Sie können dieses Problem auch lösen, indem Sie:

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

Aber die Art und Weise, wie es zuerst geschrieben wurde, wird diese Änderung dauerhaft machen.


6
Könnte jemand etwas mehr erklären, was dies bewirkt, und erläutern, warum es helfen könnte?
Hinrich

11
@Hinrich, es ist nur eine Vermutung, ich denke, nodejs beobachtet die Änderungen des Dateisystems über die inotify-Bibliothek. Ich denke, es gibt ein Limit pro Benutzer für die maximale Anzahl von Uhren, die diese Einstellung auf einen größeren Wert ändert.
Devrimbaris 6.

2
@devrimbaris Richtig!
Erik Åsland

3
Es ist mir gerade passiert, nachdem ich von Ubuntu 14.04 zu Ubuntu 16.04 gewechselt bin. Ihre Lösung hat auch bei mir funktioniert. Vielen Dank
Mestre San

2
/etc/sysctl.d/90-override.conf
Ziehen

28

Erik, du kannst einfach alle anderen Knotenprozesse durch beenden

pkill -f Knoten

und starten Sie Ihren Server erneut. Dann wird es gut funktionieren.


7
Downvote, da dies auch dazu führte, dass meine Visual Studio Code-Fenster einfrierten.
LexH

das funktionierte wie ein Zauber ... bis jetzt! Jetzt ist es unwirksam und es wird der gleiche Fehler angezeigt.
Turmfalke

28

Beim Ausführen des Knotenservers werden folgende Fehler und Lösungen angezeigt:

nodemon server.js

[nodemon] 1.17.2

[nodemon], um jederzeit neu zu starten, geben Sie ein rs

[nodemon] gucken : .

[nodemon] startet node server.js

[nodemon] Interne Überwachung fehlgeschlagen: watch / home / aurum304 / jin ENOSPC

sudo pkill -f node

oder

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

19

Wie hier diskutiert , ENOSPCheißt das Error No more hard-disk space available. Der Grund, warum so viel Speicher von nodemonoder gulp-nodemon(in meinem Fall) benötigt wird, ist, dass es den Inhalt eines Ordners überwacht hat, den es nicht sollte. Um dieses Problem zu beheben, verfügt nodemon über eine ignoreEinstellung, mit der nodemon mitgeteilt werden kann, was nicht zu sehen ist. Schauen Sie sich hier die Beispielkonfiguration von nodemon an .


Gute Arbeit, das ist die Grundursache.
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.

Dies ist der Fehler, den ich beim Laufen bekommen habe nodemon ./bin/www.

Die Lösung bestand darin, ein Atom-Fenster zu schließen , in dem ein ganzes Verzeichnis von Ordnern im Projektfenster geöffnet war.

Ich weiß nicht warum, aber ich gehe davon aus, dass Atom und Nodemon ähnliche Prozesse verwenden, um Dateien / Ordner zu überwachen.


2
Das war genau mein Problem. Ich habe Atom zufällig aus dem Installationsverzeichnis des Projekts gestartet. Ich schloss das Atom, startete es aus einem anderen Verzeichnis und das Problem verschwand.
Ja.

In meinem Fall passierte dasselbe auf Sublime in Ubuntu. Wenn ich die IDE geschlossen habe, konnte ich sie ordnungsgemäß ausführen. Irgendwelche Tipps dazu?
Shad

Ich habe nicht versucht, es zu replizieren, um festzustellen, ob es behoben wurde.
Codeinaire

Vielen Dank. Meins kann funktionieren, nachdem ich Gitkraken geschlossen habe. Das ist ein seltsames Problem. Das heißt also, wir können nicht zwei Prozesse haben, die denselben Ordner überwachen?
Zhang LongQI

Es war der Nextcloud-Kunde hier, der eine Menge inotify-Uhren verwendet. Danke euch allen!
Bill McGonigle

8

Versuche dies....

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

Wird trotzig funktionieren


1
Ich mag die rebellische Natur dieses Trotzes
SimplyKnownAsG

7

Fügen Sie eine nodemon.jsonKonfigurationsdatei in Ihrem Stammordner hinzu und geben Sie Ignoriermuster an, zum Beispiel:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Beachten Sie, dass standardmäßig .git, node_modules, bower_components, .nyc_output, coverageund .sass-cacheignoriert werden , so dass Sie sie für Ihre Konfiguration nicht hinzufügen müssen.

Erläuterung: Dieser Fehler tritt auf, weil Sie die von Ihrem System maximal zulässige Anzahl von Beobachtern überschritten haben (dh nodemonkeinen Speicherplatz mehr zum Überwachen aller Dateien haben - was wahrscheinlich bedeutet, dass Sie nicht wichtige Dateien überwachen). Sie ignorieren also unwichtige Dateien, deren Änderungen Sie nicht interessieren, z. B. die Build-Ausgabe oder die Testfälle.


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

Das hat bei mir funktioniert


1
Bitte fügen Sie eine Erklärung hinzu, wie dies die Frage beantwortet.
Jason Aller

Hat richtig funktioniert
Rohit Parte

3

In meinem Fall hat das Schließen des Visual Studio-Codes und das Starten des Servers den Trick getan

Betriebssystem - Ubuntu 16.4 lts

node.js version - 8.11.1

npm version - 6.0.0


Es scheint, dass er kein visuelles Studio benutzte.
Julien Revault d'A ...

1
Obwohl dies die Frage nicht direkt beantwortet (da die Frage keinen VS-Code enthält), hat dies mein Problem gelöst.
Chasen Bettinger

2

Anstatt eine Liste der zu ignorierenden Verzeichnisse anzugeben (z. B. negativ), können Sie auch eine Liste der zu beobachtenden Verzeichnisse angeben (z. B. positiv):

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

In meinem speziellen Fall hatte ich ein Verzeichnis, das ich ansehen wollte, und ungefähr neun, die ich ignorieren wollte. Daher war die Angabe von '--watch' viel einfacher als die Angabe von '--ignore'.


0

Ich hatte den gleichen Fehler, aber in Ubuntu 14.04 in Windows 10 (Bash unter Ubuntu unter Windows). Alles, was ich getan habe, um den Fehler zu beheben, war das Update des Erstellers zu aktualisieren, mit dem ich dann die 16.04-Version von Ubuntu bash installieren konnte. Nach der Installation der neuesten Version des Knotens (durch diese Schritte) habe ich auch die neueste Version von npm und dann den nodemon installiert begann richtig zu arbeiten.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.