如何在nodejs中正确使用域

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

并作为中间件在快递,但似乎

  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

正如本页开头附近所指出的那样,抓住exception,logging并继续前进不是个好主意。 相反,您应该logging它并重新启动过程。

文档中包含的示例将closures发生exception的节点进程,并重新启动一个新进程。 这是调用dispose并转到下一个请求的首选方法。

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

如果确实如此,不要忘记标记这是正确的答案。