Node.JS: Errore: [nodemon] Controllo interno non riuscito: controllo ENOSPC


136

Ho appena installato Node.jssul mio Ubuntu 14.04sistema operativo per la prima volta. Ho anche installato npm. Il passo successivo nel mio processo di installazione era l'installazione nodemon. Tutto ha funzionato bene.


Ma, quando corro nodemondigitando la nodemon app.jsmia riga di comando, ottengo il seguente errore ...

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

Nella riga di comando sotto l'errore ...

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

Perché sta succedendo? Questo comportamento è normale per nodemon? In caso contrario, come posso ripararlo?


Note a margine ...

1) app.jsè un Javascriptfile con console.log(111)al suo interno.
2) la nodeversione è v0.10.25
3) la npmversione è 1.3.10
4) la nodemonversione è 1.8.1
5) la ubuntuversione è ...

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

Risposte:


451

Sembra che le mie porte massime non siano state configurate correttamente. Ho eseguito il seguente codice e ha funzionato ...

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

Ciò che questo comando fa è aumentare il numero di orologi consentiti per un singolo utente. Per impostazione predefinita, il numero può essere basso (ad esempio 8192). quandonodemon cerca di guardare un gran numero di directory per le modifiche, deve creare diversi orologi, che possono superare questo limite.

È inoltre possibile risolvere questo problema:

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

Ma il modo in cui è stato scritto per primo renderà permanente questa modifica.


6
Qualcuno potrebbe spiegare un po 'di più ciò che fa e approfondire il motivo per cui potrebbe aiutare?
Hinrich,

11
@Hinrich, è solo una supposizione, penso che nodejs guarda i cambiamenti del file system tramite la libreria inotify. Penso che ci sia un limite per utente per il numero massimo di orologi, che questa impostazione cambia in un valore maggiore.
ᐅ devrimbaris su Facebook

2
@devrimbaris Correct!
Erik Åsland,

3
Mi è appena successo dopo essere passato da Ubuntu 14.04 a Ubuntu 16.04. La tua soluzione ha funzionato anche per me. Grazie
Mestre San

2
Metti che su /etc/sysctl.d/90-override.confse siete su Arch
OverCoder

28

Erik, puoi semplicemente uccidere tutti gli altri processi del nodo

nodo pkill -f

e quindi riavviare nuovamente il server. Funzionerà bene allora.


7
Downvote perché anche questo ha causato il congelamento delle finestre del mio codice di Visual Studio.
LexH,

questo funzionava come un fascino ... fino ad ora! Ora è inefficace, ottenendo lo stesso errore.
Kestrel

28

Sul server nodo in esecuzione mostra i seguenti errori e soluzioni:

nodemon server.js

[nodemon] 1.17.2

[nodemon] per riavviare in qualsiasi momento, inserire rs

[nodemon] osservazione: .

[nodemon] in avvio node server.js

[nodemon] Orologio interno non riuscito: watch / home / aurum304 / jin ENOSPC

sudo pkill -f node

o

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

19

Come da discussione qui , ENOSPCsignifica Error No more hard-disk space available. Motivo per cui questa memoria richiesta da nodemono gulp-nodemon(nel mio caso) è che stava guardando il contenuto di una cartella che non dovrebbe. Per correggere quel nodemon ha ignoreimpostazioni che possono essere utilizzate per dire a Nodemon cosa non guardare. Dai un'occhiata alla configurazione di esempio di nodemon qui .


Ottimo lavoro, questa è la causa principale.
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.

Questo è l'errore che ho ricevuto durante l'esecuzione nodemon ./bin/www.

La soluzione stava chiudendo una finestra Atom con un'intera directory di cartelle aperte nella finestra del progetto.

Non so perché, ma presumo che Atom e nodemon utilizzino processi simili per guardare file / cartelle.


2
Quello era esattamente il mio problema. Sono felice di lanciare Atom dalla directory di installazione del progetto. Ho chiuso l'atomo, l'ho lanciato da un'altra directory e il problema è scomparso.
Ya.

Nel mio caso, lo stesso stava accadendo su Sublime in Ubuntu. Quando ho chiuso l'IDE, ho potuto eseguirlo correttamente. Qualche consiglio a riguardo?
Shad

Non ho provato a replicarlo per vedere se è stato corretto.
codeinaire

Grazie. Il mio può funzionare dopo aver chiuso Gitkraken. Questo è uno strano problema. Ciò significa che non possiamo avere due processi che monitorano la stessa cartella?
Zhang LongQI

Era il client Nextcloud qui - che utilizza una tonnellata di orologi inotify. Grazie a tutti!
Bill McGonigle,

8

Prova questo....

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

Funzionerà con sfida


1
Mi piace la natura ribelle di questa sfida
SimplyKnownAsG

7

Aggiungi un nodemon.jsonfile di configurazione nella tua cartella principale e specifica, ad esempio, i modelli ignora:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Si noti che per impostazione predefinita .git, node_modules, bower_components, .nyc_output, coveragee .sass-cachevengono ignorate in modo non è necessario per aggiungerli alla propria configurazione.

Spiegazione: Questo errore si verifica perché hai superato il numero massimo di watcher consentito dal tuo sistema (ovvero nodemonnon ha più spazio su disco per guardare tutti i file, il che probabilmente significa che stai guardando file non importanti). Quindi ignori i file non importanti che non ti interessano delle modifiche in essi, ad esempio l'output di generazione o i casi di test.


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

Questo ha funzionato per me


1
Aggiungi una spiegazione di come questo risponde alla domanda.
Jason Aller,

Ha funzionato correttamente
Rohit Parte

3

nel mio caso la chiusura del codice di Visual Studio e quindi l'avvio del server ha funzionato

Sistema operativo - Ubuntu 16,4 lts

versione node.js - 8.11.1

versione npm - 6.0.0


Sembra che non stesse usando Visual Studio.
Julien Revault d'A ...

1
Sebbene questo non risponda direttamente alla domanda (perché la domanda non riguarda il codice VS), questo ha risolto il mio problema.
Chasen Bettinger,

2

Invece di specificare un elenco di directory da ignorare (ad esempio negativo), puoi anche specificare un elenco di directory da guardare (ad esempio positivo):

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

Nel mio caso particolare, avevo una directory che volevo guardare e circa nove che volevo ignorare, quindi specificare '--watch' era molto più semplice che specificare '--ignore'


0

Ho avuto lo stesso errore, ma in Ubuntu 14.04 all'interno di Windows 10 (Bash su Ubuntu su Windows). Tutto quello che ho fatto per superare l'errore era aggiornare l'aggiornamento Creators, che mi ha quindi permesso di installare la versione 16.04 di Ubuntu bash e quindi dopo aver installato la versione più recente del nodo (con questi passaggi) ho installato anche la versione più recente di npm e quindi il nodemon ha iniziato a funzionare correttamente.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.