How to debug "Error: Promise rejected with no or falsy reason" in Mocha tests?

How to debug "Error: Promise rejected with no or falsy reason" in Mocha tests?

我在 Mocha 中的测试失败并出现此错误。

我已将 catch 语句放在每个 promise 链的末尾,这些语句会抛出任何已传递但从未被调用的错误。

然而测试一直失败并出现以下错误:

Error: Promise rejected with no or falsy reason
  at tryCatcher (node_modules/bluebird/js/main/util.js:26:23)
  at Promise._settlePromiseFromHandler (node_modules/bluebird/js/main/promise.js:507:31)
  at Promise._settlePromiseAt (node_modules/bluebird/js/main/promise.js:581:18)
  at Promise._settlePromises (node_modules/bluebird/js/main/promise.js:697:14)
  at Async._drainQueue (node_modules/bluebird/js/main/async.js:123:16)
  at Async._drainQueues (node_modules/bluebird/js/main/async.js:133:10)
  at Immediate.Async.drainQueues [as _onImmediate] (node_modules/bluebird/js/main/async.js:15:14)

我如何找出问题的确切原因,哪个承诺被拒绝并获得更有意义的跟踪?

我找到了触发错误的原因。我不得不承诺一个流,所以我把它包装在 return new Promise...

但是,promises 与常规回调具有不同的签名。错误首先出现在回调中:function(err, res) { ... }。在承诺中,它是相反的:new Promise(function(resolve, reject) { ... }.

我有 new Promise(function(reject, resolve) { ... }。因此,我在流结束时调用 resolve,在流出错时调用 reject。但是,我的 resolve 实际上是 reject 函数,而我的 reject 实际上是 resolve 函数,因为我将它们取反了。