189 votes

Redémarrer le nœud lors de la modification d'un fichier

Pour quelqu'un qui vient de PHP, le processus de tuer node et de le redémarrer après chaque changement de code, semble très fastidieux. Existe-t-il un indicateur lors du démarrage d'un script avec node pour redémarrer automatiquement node lorsque le changement de code est sauvegardé ?

159voto

almypal Points 2384

Une bonne option est Superviseur de nœud :

npm install supervisor -g

et après avoir migré vers la racine de votre application, utilisez ce qui suit

supervisor app.js

0 votes

La même chose ici, pour une raison quelconque, car j'ai utilisé nodemon auparavant sans aucun problème.

1 votes

Cela a fonctionné pour moi aussi. J'ai dû remplacer le paramètre de surveillance par joker par défaut par server.js parce qu'il redémarrait constamment, ce qui était dû au fait que mon serveur construisait le client au démarrage et modifiait donc les fichiers. supervisor --watch server.js server.js l'a résolu.

4 votes

Le superviseur de nœuds n'est plus maintenu.

108voto

Brendan Scarvell Points 6936

Vous devriez obtenir quelque chose comme nodemon .

Nodemon surveille les fichiers du répertoire dans lequel il a été lancé, et s'ils changent, il redémarre automatiquement votre application node.

Exemple :

nodemon ./server.js localhost 8080

ou simplement

nodemon server

0 votes

Une idée de la raison pour laquelle Node nécessite un redémarrage pour mettre en œuvre des modifications de code ? Et pourquoi d'autres serveurs (comme Apache/PHP) ne nécessitent pas de redémarrage ?

2 votes

@dk49 parce que les scripts de PHP dans ce cas sont lancés pour chaque requête entrante, et arrêtés une fois qu'ils ont fini de générer la page.

0 votes

@Daerdemandt merci d'avoir partagé cela mais je n'ai toujours pas compris pourquoi le serveur (sur n'importe quelle plateforme) a besoin de démarrer et de s'arrêter ? Est-ce parce qu'il maintient un cache de fichiers (réponses) ? Je pensais que le serveur chargerait les fichiers du disque au moment de la demande, les traiterait et enverrait ensuite la réponse. Je suis novice en matière de programmation côté serveur.

107voto

hyde Points 13720

module pour toujours possède un concept de serveurs node.js multiples, et peut démarrer, redémarrer, arrêter et lister les serveurs en cours d'exécution. Il peut également surveiller les modifications de fichiers et redémarrer node si nécessaire.

Installez-le si vous ne l'avez pas déjà :

npm install forever -g

Après l'avoir installé, appelez le forever commande : utiliser la commande -w pour surveiller les modifications apportées au fichier :

forever -w ./my-script.js

En outre, vous pouvez surveiller les répertoires et ignorer les modèles :

forever --watch --watchDirectory ./path/to/dir --watchIgnore *.log ./start/file

0 votes

+1 forever est assez polyvalent pour le développement/test et la production.

1 votes

J'ai essayé d'utiliser forever pour redémarrer mon serveur ES2015 Expess.js/Webpack avec cette commande forever -c babel-node -w --watchDirectory ./server ./server/index.js mais malheureusement, il semble que la durée de vie soit très longue et que le serveur redémarre trop souvent, ce qui entraîne des erreurs de port déjà utilisé... Y a-t-il un moyen d'ajouter une pause après un redémarrage ?

1 votes

@BrianDiPalma Vous devriez peut-être ajouter des motifs d'ignorance, s'il y a des fichiers changeants, tels que des journaux, sous le répertoire de surveillance. Consultez la documentation pour voir si vous pouvez définir un délai entre les redémarrages.

53voto

Kay Points 657

Différents paquets NPM sont disponibles pour faciliter cette tâche.

Pour le développement

  • nodemon : la plus populaire et la plus activement entretenue
  • pour toujours : deuxième plus grande popularité
  • node-dev : activement maintenue (à partir d'octobre 2020)
  • superviseur : n'est plus maintenue

Pour la production (avec des fonctionnalités étendues telles que la mise en grappe, le déploiement à distance, etc.)

La comparaison entre Forever, pm2 et StrongLoop est disponible sur le site suivant StrongLoop Le site web de la Commission européenne.

21voto

Abhinav bhardwaj Points 1243

Vous pouvez également essayer nodemon

Pour installer Nodemon

npm install -g nodemon

Pour utiliser Nodemon

Normalement, nous commençons un programme de nœuds comme :

node server.js

Mais ici, il faut faire comme :

nodemon server.js

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