【问题标题】:how to use domains properly in nodejs如何在nodejs中正确使用域
【发布时间】:2019-05-25 01:28:06
【问题描述】:

我尝试使用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();
    });

没有被调用

我想在响应结束时处理域

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

【问题讨论】:

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


    【解决方案1】:

    我发现的最佳示例来自 node.js 文档。

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

    正如本页开头附近所述,捕获异常、记录并继续前进是个坏主意。相反,您应该记录它并重新启动该过程。

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

    如果您确定要 dispose 域的成员,您只需将调用 dispose 放在 domain.on('error') 处理程序的开头,如此 post 中所述。

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

    【讨论】:

      猜你喜欢
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多