Comment puis-je modifier sur mon serveur de fichiers sans avoir à redémarrer nodejs, quand je veux voir les changements?
Je suis en train de mettre en place mon propre serveur nodejs, mais je vais avoir un problème. Je ne peux pas comprendre comment pour voir les modifications à ma demande, sans avoir à redémarrer il. Est-il un moyen de modifier l'application et de voir les changements de vivre avec node.js?
- Un meilleur scénario est d'utiliser deux serveurs proxy, le secondaire automne-bas serveur proxy est gérée par nginx lors de la première, on obtient en mode hors connexion(504error) (avec nginx, vous pouvez modifier la configuration avec le rechargement / pas de redémarrage), de cette façon, toutes les demandes sont passés à un serveur secondaire automatiquement après l'arrêt du premier serveur, le deuxième serveur est utilisé comme une sauvegarde afin de mettre à jour les fichiers sur le premier serveur. Lors de la première est de retour en ligne nginx va basculer vers le premier serveur. Avec cette solution, vous ne perdez pas de demandes.
Vous devez vous connecter pour publier un commentaire.
Découvrez Nœud-Superviseur. Vous pouvez lui donner une collection de fichiers à l'affût des changements et du redémarrage de votre serveur si de les changer. Il permet également de redémarrer s'il cesse de fonctionner pour une autre raison.
"Échange à chaud" code n'est pas activé dans NodeJS, car il est si facile de par inadvertance à la fin avec des fuites de mémoire ou plusieurs copies d'objets qui ne sont pas des ordures collectées. Le nœud est de rendre vos programmes accidentellement rapide, pas accidentellement percé.
MODIFIER, 7 ans après les faits: Avertissement, j'ai écrit nœud-superviseur, mais avait confié le projet à un autre responsable avant d'écrire cette réponse.
Nodules est un chargeur de module pour le Nœud qui gère l'auto-rechargement de modules sans de redémarrer le serveur (puisque c'est ce que vous posiez des questions sur):
http://github.com/kriszyp/nodules
Nodules ne intelligent dépendance suivi le module approprié usines sont ré-exécuté à préserver références correctes lorsque les modules sont rechargées sans nécessiter un redémarrage complet.
Utiliser ceci:
https://github.com/remy/nodemon
Il suffit d'exécuter votre application comme ceci:
nodemon yourApp.js
Il devrait y avoir une certaine importance à ce qui se passe, au lieu de simplement shotgunning modules à l'OP. Aussi, nous ne savons pas que les fichiers qu'il est le traitement de tous les modules JS ou qu'ils sont tous à l'aide de la "exiger" appel. Prendre les scénarios suivants avec un grain de sel, ils servent uniquement à décrire ce qui se passe si vous savez comment travailler avec elle.
Votre code a déjà été chargée et que le serveur est en cours d'exécution avec elle
SOLUTION Vous devez disposer d'un moyen de dire au serveur quel est le code a changé, de sorte qu'il peut recharger. Vous pourriez avoir un point de terminaison configuré pour recevoir un signal de commande sur la ligne de commande ou d'une demande par l'intermédiaire de tcp/http qui va lui dire ce fichier a changé et le point de terminaison de le recharger.
Votre code peut avoir "besoin" d'appels et dans lequel les charges et les caches modules
SOLUTION depuis ces modules sont mis en cache par l'exigent, à la suite de la solution précédente, vous avez besoin d'une ligne dans votre point de terminaison de supprimer cette référence
Il y a beaucoup de mises en garde pour entrer dans derrière tout cela, mais j'espère que vous avez une meilleure idée de ce qui se passe et pourquoi.
Prendre un coup d'oeil: http://lisperator.net/blog/livenode-live-code-your-nodejs-application/
si vous souhaitez recharger un module sans avoir à redémarrer le nœud de processus, vous pouvez le faire par l'aide de la watchFile fonction dans fs module et cache de compensation fonction de besoin:
Permet de dire que vous avez chargé un module avec un simple besoin:
Pour regarder ce fichier et de le recharger lors de la mise à jour ajouter celui-ci à un endroit pratique dans votre code.
Si votre module est nécessaire dans plusieurs fichiers cette opération n'affectera pas d'autres affectations, afin de garder module dans une variable globale et de l'utiliser là où il est nécessaire de global plutôt que d'exiger plusieurs fois est une option. Donc le code ci-dessus sera comme ceci:
Vous pouvez également utiliser l'outil de PM2. Ce qui est un processus de production avancé de l'outil de node js.
http://pm2.keymetrics.io/
Je pense que node-inspector est votre meilleur pari.
Similaire à la façon dont vous pouvez Live Edit côté Client code JS en Chrome Dev tools, cette utilise le Chrome (Clin) Outils de Dev Interface d'offrir en direct l'édition de code.
https://github.com/node-inspector/node-inspector/wiki/LiveEdit
Une simple solution directe avec référence à toutes les réponses sont disponibles ici:
Nœud documentation dit que fs.regarder est plus efficace que fs.watchFile & il peut regarder l'ensemble d'un dossier.
(J'ai juste commencé à l'aide de ce, donc pas vraiment sûr de savoir si il y a des inconvénients)