Je viens d'installer Node.js
sur mon système d'exploitation Ubuntu 14.04
pour la première fois. J'ai aussi installé npm
. L'étape suivante de mon processus d'installation consistait à installer nodemon
. Tout cela a bien fonctionné.
Mais, lorsque j'exécute nodemon
en tapant nodemon app.js
dans ma ligne de commande, le message d'erreur suivant s'affiche ...
[nodemon] 1.8.1
[nodemon] to restart at any time, enter
rs
[nodemon] watching: *.*
[nodemon] starting
node 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 que ce comportement est normal pour Nodemon? Si non, comment puis-je résoudre ce problème?
Notes annexes ...
1) app.js
est un fichier Javascript
avec console.log(111)
à l’intérieur.
2) node
version is v0.10.25
3) npm
version is 1.3.10
4) nodemon
version is 1.8.1
5) ubuntu
version is ...
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty
Il semble que mes ports max n'ont pas été configurés correctement. J'ai couru le code suivant et cela a fonctionné ...
echo fs.inotify.max_user_watches=582222 | Sudo tee -a /etc/sysctl.conf && Sudo sysctl -p
Le but de cette commande est d’augmenter le nombre de surveillances autorisées pour un seul utilisateur. Par défaut, le nombre peut être faible (8192 par exemple). Lorsque nodemon
tente de surveiller les modifications apportées à un grand nombre de répertoires, il doit créer plusieurs contrôles, qui peuvent 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.
Selon la discussion sur ici , ENOSPC
signifie Error No more hard-disk space available
. Raison pour laquelle autant de mémoire requise par nodemon
ou gulp-nodemon
(dans mon cas), c'est qu'il regardait le contenu d'un dossier alors qu'il ne le devrait pas. Pour résoudre ce problème, nodemon a le paramètre ignore
qui peut être utilisé pour indiquer à nodemon ce qu’il ne faut pas regarder. Jetez un oeil à nodemon sample config here .
Erik, Vous pouvez simplement tuer tous les autres processus de noeud en
noeud pkill -f
puis redémarrez votre serveur. Cela fonctionnera très bien alors.
[nodemon] Internal watch failed: watch /home/Document/nmmExpressServer/bin ENOSPC
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `nodemon ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
C'est l'erreur que j'ai eu lors de l'exécution de nodemon ./bin/www
.
La solution fermait une fenêtre Atom avec un répertoire complet de dossiers ouvert 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.
nodemon server.js
[nodemon] 1.17.2
[nodemon] pour redémarrer à tout moment, entrez
rs
[nodemon] regarde:.
[nodemon] à partir de
node server.js
Sudo pkill -f node
echo fs.inotify.max_user_watches=524288 | Sudo tee -a /etc/sysctl.conf && Sudo sysctl -p
Ça marche pour moi.
echo fs.inotify.max_user_watches=524288 | Sudo tee -a /etc/sysctl.conf && Sudo sysctl -p
Ajoutez un fichier de configuration nodemon.json
dans votre dossier racine et spécifiez des modèles ignorés, par exemple:
nodemon.json
{
"ignore": [
"*.test.js",
"dist/*"
]
}
.git
, node_modules
, bower_components
, .nyc_output
, coverage
et .sass-cache
sont ignorés, vous n'avez donc pas besoin de les ajouter à votre configuration.Explication: Cette erreur se produit car vous avez dépassé le nombre maximal d'observateurs autorisés par votre système (c'est-à-dire que nodemon
n'a plus d'espace disque pour regarder tous les fichiers - ce qui signifie probablement que vous surveillez des fichiers non importants). Ainsi, vous ignorez les fichiers non importants pour lesquels vous ne vous souciez pas des modifications, par exemple la sortie de construction ou les scénarios de test.
Au lieu de spécifier une liste de répertoires à ignorer (par exemple, négative), vous pouvez également spécifier une liste de répertoires à surveiller (par exemple, positive):
nodemon --watch dir1 --watch dir2 dir1/examples/index.js
Dans mon cas particulier, je voulais regarder un répertoire et en ignorer environ neuf. Par conséquent, spécifier «--watch» était beaucoup plus simple que de spécifier «--ignore».
J'ai eu la même erreur, mais dans Ubuntu 14.04 dans Windows 10 (Bash sur Ubuntu sur Windows). Tout ce que j'ai fait pour surmonter l'erreur a été de mettre à jour la mise à jour de 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 les étapes this ), j'ai également installé la dernière version de npm. et puis le nodemon a commencé à fonctionner correctement.
dans mon cas, la fermeture du code de Visual Studio puis le démarrage du serveur ont fait l'affaire
Système d'exploitation - Ubuntu 16.4 lts
version de node.js - 8.11.1
npm version - 6.0.0
Après avoir exécuté nodemon, j'ai eu l'erreur suivante
[nodemon] 1.18.6
[0] [nodemon] to restart at any time, enter
rs
[0] [nodemon] watching: *.*
[0] [nodemon] starting
node server.js
[0] [nodemon] Internal watch failed: ENOSPC: no space left on device, watch 'some filename'
[0] npm ERR! code ELIFECYCLE
[0] npm ERR! errno 1
[0] npm ERR! [email protected] server:
nodemon server.js
[0] npm ERR! Exit status 1
[0] npm ERR!
[0] npm ERR! Failed at the [email protected] server script.
Mais ceux-ci ont été résolus après l'exécution de cette commande:
`echo fs.inotify.max_user_watches=524288 | Sudo tee -a /etc/sysctl.conf && Sudo sysctl -p`