278 votes

Erreur Nodemon : La limite du système pour le nombre de surveillants de fichiers est atteinte

J'apprends graphql et en utilisant prisma-binding pour les opérations de graphql. Je suis confronté à ceci nodemon lorsque je démarre mon serveur node et qu'il me donne le chemin du fichier de schéma qui est généré automatiquement par un système de gestion des données. graphql-cli . Quelqu'un peut-il me dire à quoi correspond cette erreur ?

Erreur :

Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/media/rehan-sattar/Development/All projects/GrpahQl/graph-ql-course/graphql-prisma/src/generated

0 votes

C'est l'erreur linux ulimit voir ici stackoverflow.com/questions/34588/

0 votes

J'ai essayé ça ! J'obtiens à nouveau la même erreur !

2 votes

Vous regardez probablement trop de fichiers. Peut-être inclut-il également le répertoire nod_modules ?

628voto

Isac Moura Points 3442

Si vous utilisez Linux, votre projet atteint la limite des surveillants de fichiers de votre système.

Pour corriger cela, sur votre terminal, essayez :

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

10 votes

Utiliser sysctl --system à recharger pour les systèmes plus récents

37 votes

Y a-t-il d'autres implications que nous devons connaître lorsque nous faisons cela ? Je savais que cela permettait de résoudre le problème, je l'ai moi-même essayé. Mais je suis un peu sceptique quant aux éventuels effets secondaires que ce correctif peut provoquer.

1 votes

@Aldee sur les implications techniques de ce changement, je vous recommande de consulter ce wiki : github.com/guard/listen/wiki/

79voto

Curt Sampson Points 10866

Vous devez augmenter le inotify limite de surveillants pour les utilisateurs de votre système. Vous pouvez faire cela à partir de la ligne de commande avec :

sudo sysctl -w fs.inotify.max_user_watches=100000

Cela ne durera que jusqu'à ce que vous redémarriez, cependant. Pour rendre cela permanent, ajoutez un fichier nommé /etc/sysctl.d/10-user-watches.conf avec le contenu suivant :

fs.inotify.max_user_watches = 100000

Après avoir effectué la modification ci-dessus (ou toute autre modification), vous pouvez recharger les paramètres de tous les fichiers de configuration sysctl dans le répertoire /etc con sudo sysctl -p .

76voto

Juri Sinitson Points 41

Je rencontre parfois ce problème lorsque je travaille avec VSCode sur ma machine Ubuntu.

Dans mon cas, la solution de contournement suivante est utile :

arrêter le watcher, fermer VScode, démarrer le watcher, ouvrir VSCode à nouveau.

0 votes

C'est bien vrai ! Grâce au VSCode. Ce devrait être un mode de sauvegarde automatique.

0 votes

Cela a fonctionné pour moi ; je développe avec ember-cli

0 votes

Comme avec ma focal box, cela se produit de façon intermittente et le redémarrage de VSCode est la solution sans avoir à modifier le nombre maximum de montres utilisateur. (note : Quand cela fonctionne, je vois généralement les montres utilisées bien en dessous de 7k)

30voto

Manuel Lazo Points 301

Afin de tester les changements, j'ai réglé temporairement le paramètre avec la valeur 524288.

sysctl -w fs.inotify.max_user_watches=524288

puis je procède à la validation :

npm run serve

Et le problème a été résolu, afin de le rendre permanent, vous devriez essayer d'ajouter une ligne dans le fichier "/etc/sysctl.conf" et ensuite redémarrer le service sysctl :

cat /etc/sysctl.conf |tail -n 2
fs.inotify.max_user_watches=524288

sudo systemctl restart systemd-sysctl.service

1 votes

Cette astuce pour le test temporaire est inestimable. Merci à vous

16voto

Sage Points 63

J'ai eu le même problème, mais le mien venait de webpack. Heureusement, ils ont trouvé une bonne solution sur leur site :

Pour certains systèmes, l'observation de nombreux fichiers peut entraîner une forte utilisation du CPU ou de la mémoire. Il est possible d'exclure un énorme dossier comme node_modules en utilisant une expression régulière :

webpack.config.js

module.exports = {
  watchOptions: {
    ignored: /node_modules/
  }
};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X