web-dev-qa-db-fra.com

Arrêtez et redémarrez les serveurs express par programme (pour changer les ports)

Je cherche à changer les ports sur lesquels mon application express fonctionne.

J'ai essayé:

server.on('close', function() {
  server.listen(3000);
});

server.listen(8080);
server.close();

Cela retourne une erreur node.js cryptique. J'utilise le nœud v0.4.11, je suis en train de mettre à niveau maintenant pour voir si cela le corrige.

MODIFIER Voici l'erreur:

Assertion failed: (!io->watcher_.active), function Set, file ../src/node_io_watcher.cc, line 160.

Merci, Matt

24
Matt

Le problème est que .listen est asynchrone. En appelant .close immédiatement après avoir appelé .listen, vous le fermez avant son ouverture.

Essayez plutôt cela.

server.listen(8080, function() {
  server.close();
});
35
loganfsmyth

Grâce à @ aymericbeaumet , l'extrait de code suivant fonctionne avec Express 4:

var app = express();

var server = app.listen(8080, function() {
  console.log('Listening :)');
  server.close(function() { console.log('Doh :('); });
});
2
Derek Hill