在timout上从node.js获取栈回溯?

我正在使用node.js与域和cluster捕捉意外的exception(程序员错误),然后重新正常启动。 然而,我们偶尔.catch().finally()程序员不能添加最后的.catch().finally()来确保他们的代码实际返回。

我可以很容易地添加一个超时,在预先指定的时间之后抛出一个exception,以确保这些不好的请求不会永远活着。 但是我想要做的是让超时信息从域中解脱出来,以解释请求中发生了什么,这样我们就可以得到一个日志/通知/无论从哪个开始, 。

有没有合理的方法来做到这一点?

如果是这样的话,我们使用express作为框架, express-domain-middleware来获取域/重启逻辑,并承诺asynchronous逻辑。

你并不需要这个域名。 如果使用承诺库(如蓝鸟,或者甚至是Q)或最近版本的Node(即io.js),则不必记住在所有链上使用.catch并使用专用事件:

  process.on("unhandledRejection", function(e, reason){ // promise was rejected, even if no `catch` or `finally` attached // restart the process }); 

请注意,域名已被弃用,并可能在未来版本的NodeJS中被删除,如果您使用的是承诺,那么您已经具备了安全性,所以就是这样。