UnhandledPromiseRejectionWarning的NodeJS Stacktrace警告:错误:ETIMEDOUT

时间:2018-07-10 19:30:42

标签: node.js

我有一个节点应用程序在下面抛出错误,但我不知道它来自哪里。我怀疑这与我们使用的BigQuery库进行的调用有关。

关于如何在第三方库中获取超时错误的堆栈跟踪的任何建议?

我尝试使用--trace-events-enabled运行节点,但是堆栈跟踪并没有改善。

2018-07-10T15:16:04.24-0400 [APP/PROC/WEB/0] ERR (node:66) UnhandledPromiseRejectionWarning: Error: ETIMEDOUT
2018-07-10T15:16:04.24-0400 [APP/PROC/WEB/0] ERR at Timeout._onTimeout (/home/vcap/deps/0/node_modules/request/request.js:845:19)
2018-07-10T15:16:04.24-0400 [APP/PROC/WEB/0] ERR at ontimeout (timers.js:427:11)
2018-07-10T15:16:04.24-0400 [APP/PROC/WEB/0] ERR at tryOnTimeout (timers.js:289:5)
2018-07-10T15:16:04.24-0400 [APP/PROC/WEB/0] ERR at listOnTimeout (timers.js:252:5)
2018-07-10T15:16:04.24-0400 [APP/PROC/WEB/0] ERR at Timer.processTimers (timers.js:212:10)
2018-07-10T15:16:04.24-0400 [APP/PROC/WEB/0] ERR (node:66) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3)

1 个答案:

答案 0 :(得分:0)

您可以捕获unhandledRejection事件并触发堆栈跟踪。在程序启动期间运行以下命令:

process.on("unhandledRejection", err => {
    console.error(err);
});

如果对异步函数进行常规调用,或者忽略函数返回的promise,则经常会发生UnhandledProcessRejection错误。该解决方案可能涉及使用.then()和.catch()块或async / await。