关于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"调用导致异常?
答案 0 :(得分:0)
有几个节点模块提供“异步堆栈跟踪”。它们似乎提供了与Chrome开发人员工具中Async
复选框类似的功能(在“来源”下)。我从来没有真正与它们中的任何一个合作过,我认为它们不一定适用于生产系统,但它们可能对开发环境很有用。
快速谷歌搜索会向您显示一些可能的模块(例如async-stacktrace)。