【发布时间】:2020-04-04 19:07:57
【问题描述】:
我正在尝试从 Node.js 中的 Promise 中找到未处理拒绝的来源
我尝试使用--async-stack-traces 选项升级到 Node 版本 12,并使用以下方法监听它们:
process.on("unhandledRejection",( reason, promise ) => {
console.log(reason);
console.log(promise);
});
但我仍然没有看到任何有用的堆栈跟踪来帮助我找到罪魁祸首!
UnhandledPromiseRejectionWarning: TypeError: Chaining cycle detected for promise #<Promise>
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:89675) 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: 11)
运行节点 v10.10.0
【问题讨论】:
-
是否有多个承诺?
-
你的代码中的错误是一个循环链接,就像你使用
const cyclic = Promise.resolve().then(()=>cyclic);一样,所以不要搜索未处理的承诺拒绝,这个在节点的内部代码。 -
一些提出问题的代码会有所帮助。
-
运行
npm i bluebird并在代码中添加const Promise = require('bluebird')可能会给您更详细的错误消息 -
尝试使用
--trace-warnings运行节点,未处理的拒绝伴随着您可以追踪的警告
标签: javascript node.js promise v8