Node.JS: erreur d'obtention: [nodemon] Échec de la surveillance interne: regarder ENOSPC


136

Je viens de l'installer Node.jssur mon Ubuntu 14.04système d'exploitation pour la première fois. J'ai également installé npm. La prochaine étape de mon processus d'installation était l'installation nodemon. Tout cela a bien fonctionné.


Mais, lorsque je lance nodemonen tapant nodemon app.jsdans ma ligne de commande, j'obtiens l'erreur suivante ...

[nodemon] 1.8.1 [nodemon] to restart at any time, enter [nodemon] watching: *.* [nodemon] startingnœud rs app.js [nodemon] Internal watch failed: watch ENOSPC

Dans la ligne de commande sous l'erreur ...

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

Pourquoi cela arrive-t-il? Est-ce un comportement normal pour nodemon? Sinon, comment puis-je y remédier?


Notes d'accompagnement ...

1) app.jsest un Javascriptfichier avec à l' console.log(111)intérieur de celui-ci.
2) la nodeversion est v0.10.25
3) la npmversion est 1.3.10
4) la nodemonversion est 1.8.1
5) la ubuntuversion est ...

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

Réponses:


451

Il semble que mes ports maximum n'ont pas été configurés correctement. J'ai exécuté le code suivant et cela a fonctionné ...

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

Cette commande augmente le nombre de montres autorisées pour un seul utilisateur. Par défaut, le nombre peut être faible (8192 par exemple). Lorsque vous nodemonessayez de surveiller un grand nombre de répertoires pour les changements, il doit créer plusieurs montres, ce qui peut dépasser cette limite.

Vous pouvez également résoudre ce problème en:

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

Mais la façon dont il a été écrit en premier rendra ce changement permanent.


6
Quelqu'un pourrait-il expliquer un peu plus ce que cela fait et expliquer pourquoi cela pourrait aider?
Hinrich

11
@Hinrich, ce n'est qu'une supposition, je pense que nodejs surveille les changements du système de fichiers via la bibliothèque inotify. Je pense qu'il y a une limite par utilisateur pour le nombre maximum de montres, que ce paramètre change en une valeur plus élevée.
的 devrimbaris

2
@devrimbaris Correct!
Erik Åsland

3
Cela m'est arrivé juste après être passé d'Ubuntu 14.04 à Ubuntu 16.04. Votre solution a également fonctionné pour moi. Merci
Mestre San

2
Mettez-le /etc/sysctl.d/90-override.confsi vous êtes sur Arch
OverCoder

28

Erik, vous pouvez simplement tuer tous les autres processus de nœud en

noeud pkill -f

puis redémarrez votre serveur à nouveau. Cela fonctionnera très bien alors.


7
Downvote car cela a également provoqué le gel de mes fenêtres Visual Studio Code.
LexH

cela fonctionnait comme un charme ... jusqu'à maintenant! Maintenant, c'est inefficace, obtenir la même erreur.
Kestrel

28

Sur le serveur de nœuds en cours d'exécution, les erreurs et solutions suivantes sont affichées:

nodemon server.js

[nodemon] 1.17.2

[nodemon] pour redémarrer à tout moment, entrez rs

[nodemon] l' observation: .

[nodemon] démarrage node server.js

[nodemon] Échec de la surveillance interne: watch / home / aurum304 / jin ENOSPC

sudo pkill -f node

ou

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

19

Selon la discussion ici , ENOSPCsignifie Error No more hard-disk space available. La raison pour laquelle autant de mémoire requise par nodemonou gulp-nodemon(dans mon cas) est qu'il surveillait le contenu d'un dossier, ce qu'il ne devrait pas. Pour résoudre ce problème, nodemon a un ignoreparamètre qui peut être utilisé pour indiquer à nodemon ce qu'il ne doit pas regarder. Jetez un œil à l'exemple de configuration nodemon ici .


Bon travail, c'est la cause première.
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.

C'est l'erreur que j'ai eue lors de l'exécution nodemon ./bin/www.

La solution fermait une fenêtre Atom qui avait un répertoire entier de dossiers ouverts dans la fenêtre du projet.

Je ne sais pas pourquoi, mais je suppose qu'Atom et nodemon utilisent des processus similaires pour surveiller les fichiers / dossiers.


2
C'était exactement mon problème. J'ai eu le temps de lancer atom depuis le répertoire d'installation du projet. J'ai fermé l'atome, l'ai lancé à partir d'un répertoire différent et le problème a disparu.
Ouais.

Dans mon cas, la même chose se passait sur Sublime dans Ubuntu. Lorsque j'ai fermé l'IDE, je pouvais l'exécuter correctement. Des conseils à ce sujet?
Shad

Je n'ai pas essayé de le reproduire pour voir s'il a été corrigé.
codinaire

Merci. Le mien peut fonctionner après la fermeture de Gitkraken. C'est un problème étrange. Cela signifie donc que nous ne pouvons pas avoir deux processus surveillant le même dossier?
Zhang LongQI

C'était le client Nextcloud ici - qui utilise une tonne de montres inotify. Merci à tous!
Bill McGonigle

8

Essaye ça....

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

Travaillera avec défi


1
J'aime la nature rebelle de ce défi
SimplyKnownAsG

7

Ajoutez un nodemon.jsonfichier de configuration dans votre dossier racine et spécifiez des modèles d'ignorer, par exemple:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Notez que par défaut .git, node_modules, bower_components, .nyc_output, coverageet .sass-cachesont ignorés si vous ne avez pas besoin de les ajouter à votre configuration.

Explication: Cette erreur se produit parce que vous avez dépassé le nombre maximal d'observateurs autorisés par votre système (c'est-à-dire qu'il nodemonn'y a plus d'espace disque pour regarder tous les fichiers - ce qui signifie probablement que vous regardez des fichiers non importants). Vous ignorez donc les fichiers non importants dont vous ne vous souciez pas des changements qu'ils contiennent, par exemple la sortie de construction ou les cas de test.


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

Cela a fonctionné pour moi


1
Veuillez ajouter une explication de la façon dont cela répond à la question.
Jason Aller le

A bien fonctionné
Rohit Parte

3

dans mon cas, fermer le code de Visual Studio puis démarrer le serveur a fait l'affaire

Système d'exploitation - Ubuntu 16.4 lts

version node.js - 8.11.1

version npm - 6.0.0


Il semble qu'il n'utilisait pas Visual Studio.
Julien Revault d'A ...

1
Bien que cela ne réponde pas directement à la question (car la question n'implique pas de code VS), cela a résolu mon problème.
Chasen Bettinger

2

Au lieu de spécifier une liste de répertoires à ignorer (par exemple négatif), vous pouvez également spécifier une liste de répertoires à surveiller (par exemple positif):

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

Dans mon cas particulier, j'avais un répertoire que je voulais regarder et environ neuf que je voulais ignorer, donc spécifier '--watch' était beaucoup plus simple que de spécifier '--ignore'


0

J'ai eu la même erreur, mais dans Ubuntu 14.04 dans Windows 10 (Bash sur Ubuntu sous Windows). Tout ce que j'ai fait pour surmonter l'erreur était de mettre à jour la mise à jour Creators, ce qui m'a ensuite permis d'installer la version 16.04 d'Ubuntu bash, puis après avoir installé la dernière version de node (par cette étape), j'ai également installé la dernière version de npm, puis le nodemon a commencé à fonctionner correctement.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.