首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >优雅地退出node.js

优雅地退出node.js
EN

Stack Overflow用户
提问于 2011-08-05 23:29:01
回答 1查看 59.3K关注 0票数 80

我正在阅读优秀的在线书籍http://nodebeginner.org/,并尝试简单的代码

代码语言:javascript
复制
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时,我都会收到以下错误消息。

代码语言:javascript
复制
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)如何修复我造成的混乱?

EN

回答 1

Stack Overflow用户

发布于 2012-05-23 07:14:17

由于node.js是事件驱动的运行时,最合适的退出方式是耗尽挂起的事件队列。当事件队列为空时,该过程将结束。您可以通过执行一些操作来确保事件队列被排空,例如清除设置的任何间隔计时器,以及关闭任何具有打开的套接字连接的服务器。在使用第三方模块时,这会变得更加棘手,因为模块作者是否小心地清除了它创建的挂起事件,这取决于模块的作者。这可能不是退出node.js进程的最实用的方法,因为您将花费大量精力来跟踪“泄漏”的未决事件,但我认为这是最优雅的方法。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6958780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档