如何在nodejs中正确使用域

时间:2013-02-28 07:03:25

标签: javascript node.js node.js-domains

我尝试使用domains核心模块而不是process.on('uncaughtException')来捕获错误

function setupDomains(req, res, next) {
    var reqd = domain.create();

    reqd.add(req);
    reqd.add(res);
    reqd.on('error', function(err) {
      console.log(err);
      req.next(err);
    });
    res.on('end', function() {
      console.log('disposing domain for url ' + req.url);
      reqd.dispose();
    });
    reqd.run(next);
}

并在express中用作中间件 但似乎

 res.on('end', function() {
      console.log('disposing domain for url ' + req.url);
      reqd.dispose();
    });

未被称为

我想在响应结束时处置域

如何正确地做到这一点,或者我可能不必这样做?

1 个答案:

答案 0 :(得分:1)

我发现如何执行此操作的最佳示例来自node.js文档。

http://nodejs.org/api/domain.html#domain_warning_don_t_ignore_errors

在本页开头附近识别出来,抓住异常,记录并继续前进是一个坏主意。相反,您应该记录它并重新启动该过程。

文档中包含的示例将关闭发生异常的节点进程并重新启动新进程。这是调用dispose并继续下一个请求的首选方法。

如果您确定要dispose域成员,则只需将调用置于domain.on('error')处理程序的开头,详见此post }。

如果确实如此,请不要忘记将此标记为正确答案。