如何让JavaScript异常更具信息性?

时间:2016-05-24 20:42:51

标签: javascript node.js

关于JavaScript的一个非常令人沮丧的事情是,如果它在外部模块上失败,它就不会告诉你启动路径的代码行。

例如:

Unhandled rejection RequestError: Error: socket hang up
    at new RequestError (/../node_modules/request-promise/lib/errors.js:11:15)
    at Request.RP$callback [as _callback] (/../node_modules/request-promise/lib/rp.js:60:32)
    at self.callback (/../node_modules/request/request.js:199:22)
    at Request.emit (events.js:95:17)
    at Request.onRequestError (/../node_modules/request/request.js:821:8)
    at ClientRequest.emit (events.js:95:17)
    at Socket.socketOnEnd (http.js:1569:9)
    at Socket.g (events.js:180:16)
    at Socket.emit (events.js:117:20)
    at _stream_readable.js:944:16
    at process._tickDomainCallback (node.js:492:13)

这个堆栈跟踪在什么现实中有用?有没有办法让它打印最后一个" non node_module"调用导致异常?

1 个答案:

答案 0 :(得分:0)

有几个节点模块提供“异步堆栈跟踪”。它们似乎提供了与Chrome开发人员工具中Async复选框类似的功能(在“来源”下)。我从来没有真正与它们中的任何一个合作过,我认为它们不一定适用于生产系统,但它们可能对开发环境很有用。

快速谷歌搜索会向您显示一些可能的模块(例如async-stacktrace)。