如何在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')
处理程序的开头即可,如本文中详述。
如果确实如此,不要忘记标记这是正确的答案。