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

Je cherche à pouvoir changer les ports sur lesquels mon application express est exécutée.

J’ai essayé:

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

Cela retourne une erreur cryptic node.js. J’exécute le noeud v0.4.11, je suis en train de mettre à jour pour voir si cela résout le problème.

EDIT Voici l’erreur:

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

Merci, Matt

Le problème est que .listen est asynchrone. En appelant .close immédiatement après avoir appelé .listen , vous le fermez avant qu’il ne soit ouvert.

Essayez ceci à la place.

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

Grâce à @aymericbeaumet , l’extrait suivant fonctionne avec Express 4:

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