javascript - 如何在nodejs中正确使用域

标签 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();
    });

没有被调用

我想在响应结束时处置域

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

最佳答案

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

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

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

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

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

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

关于javascript - 如何在nodejs中正确使用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15129480/

相关文章:

javascript - 测试库 - 测试依赖于 CSS 的逻辑

javascript - Ember , Ember 验证匹配密码和确认

javascript - 在 D3 中向分层条形图添加图例

node.js - Heroku 使用 React 和 Tailwind 构建失败

javascript - 是否需要处理 node.js 域?应该什么时候做?

Javascript POST 请求不起作用

mysql - 在连接中使用 where 子句时出现 Knex 错误

javascript - 如何将一条消息中包含的 JSON 对象数组转换为多个 JSON 对象消息?

javascript - Node JS - 记录工作集群最后一个异常

javascript - nodejs 域实际上如何在多个请求的幕后工作?