问题
I'm looking to be able to basically change ports that my express app is running on.
I've tried:
server.on('close', function() {
server.listen(3000);
});
server.listen(8080);
server.close();
This returns a cryptic node.js error. I'm running node v0.4.11, I'm upgrading now to see if that fixes it.
EDIT Here's the error:
Assertion failed: (!io->watcher_.active), function Set, file ../src/node_io_watcher.cc, line 160.
Thanks, Matt
回答1:
The issue is that .listen
is asynchronous. By calling .close
immediately after calling .listen
, you are closing it before it has been opened.
Try this instead.
server.listen(8080, function() {
server.close();
});
回答2:
Thanks to @aymericbeaumet, the following snippet works with Express 4:
var app = express();
var server = app.listen(8080, function() {
console.log('Listening :)');
server.close(function() { console.log('Doh :('); });
});
来源:https://stackoverflow.com/questions/9959590/programmatically-stop-and-restart-express-servers-to-change-ports