Par programmation d'arrêter et de redémarrer express serveurs (pour changer de ports)
Je suis à la recherche pour être en mesure de modifier fondamentalement les ports de mon express application est en cours d'exécution sur.
J'ai essayé:
server.on('close', function() {
server.listen(3000);
});
server.listen(8080);
server.close();
Cela renvoie une cryptique node.js erreur. Je suis en cours d'exécution nœud v0.4.11, je me suis mise à niveau maintenant à voir si cela résout-il.
MODIFIER Voici l'erreur:
Assertion failed: (!io->watcher_.active), function Set, file ../src/node_io_watcher.cc, line 160.
Grâce,
Matt
.listen
est asynchrone, qui va essayer de la fermer avant de l'ouvrir. Essayezserver.listen(8080, function() { server.close(); });
, peut-être que ce sera le travail.- Quelle erreur avez-vous?
- Échec de l'Assertion: (!io->watcher_.active), fonction, fichier ../src/node_io_watcher.cc, ligne 160.
- En fait ce qui est à la recherche comme une erreur dans 0.4.11. J'ai mis à jour à 0.7.7 et il semble fonctionner. @loganfsmyth , bon je ne pense pas que c'était le problème ici, mais qui pourrait conduire à des problèmes sur la route.
- en fait scratch. Qui semble être à la racine du problème. Pourriez-vous mettre dans une réponse afin que je puisse l'accepter? Merci homme.
- Heureux de vous aider, de répondre à posté.
Vous devez vous connecter pour publier un commentaire.
Le problème est que
.listen
est asynchrone. En appelant.close
immédiatement après l'appel de.listen
, vous êtes à la clôture avant il a été ouvert.Essayez plutôt ceci.
server
à cette question est un Nœud de serveur qui a une demande expresse attaché à elle. Il n'est pas l'exprimerapp
lui-même.Grâce à @aymericbeaumet, le fragment de code suivant fonctionne avec Express 4: