【问题标题】:Getting a stack backtrace from node.js on timout?在超时时从 node.js 获取堆栈回溯?
【发布时间】:2015-09-16 09:39:45
【问题描述】:

我正在使用带有域和cluster 的 node.js 来捕获意外异常(程序员错误),然后优雅地重新启动。但是,我们偶尔会遇到程序员未能添加最终的 .catch().finally() 以确保他们的代码实际返回。

我可以轻松添加一个超时,该超时将在预先指定的时间后引发异常,以确保这些错误请求不会永远存在。但我想做的是让超时信息从域中提取出来,以解释请求中发生了什么,这样我们就可以有一个日志/通知/任何以很好地指示程序员错误在哪里开头的东西.

有什么合理的方法吗?

如果重要的话,我们使用express 作为框架,express-domain-middleware 用于获取域/重启逻辑,并承诺用于异步逻辑。

【问题讨论】:

    标签: node.js express promise


    【解决方案1】:

    您实际上并不需要域。如果你使用 Promise 库(比如 bluebird,或者 when,甚至 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 的未来版本中被删除,如果您正在使用您已经拥有 catch 安全性的 Promise,那么就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 2021-06-03
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多