我正在阅读优秀的在线书籍http://nodebeginner.org/,并尝试简单的代码
var http = require("http");
function onRequest(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
现在我不知道了(我仍然不知道!)如何优雅地关闭node.js,所以我选择了ctrl+z
。现在,每次我尝试运行node server.js
时,我都会收到以下错误消息。
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: EADDRINUSE, Address already in use
at Server._doListen (net.js:1100:5)
at net.js:1071:14
at Object.lookup (dns.js:153:45)
at Server.listen (net.js:1065:20)
at Object.<anonymous> (/Users/Bob/server.js:7:4)
at Module._compile (module.js:402:26)
at Object..js (module.js:408:10)
at Module.load (module.js:334:31)
at Function._load (module.js:293:12)
at Array.<anonymous> (module.js:421:10)
所以,有两个问题:
1)如何正常关闭node.js?
2)如何修复我造成的混乱?
发布于 2012-05-23 07:14:17
由于node.js是事件驱动的运行时,最合适的退出方式是耗尽挂起的事件队列。当事件队列为空时,该过程将结束。您可以通过执行一些操作来确保事件队列被排空,例如清除设置的任何间隔计时器,以及关闭任何具有打开的套接字连接的服务器。在使用第三方模块时,这会变得更加棘手,因为模块作者是否小心地清除了它创建的挂起事件,这取决于模块的作者。这可能不是退出node.js进程的最实用的方法,因为您将花费大量精力来跟踪“泄漏”的未决事件,但我认为这是最优雅的方法。
https://stackoverflow.com/questions/6958780
复制相似问题