我在Mocha中测试失败并出现此错误。
我在每个promise链的末尾放了catch
语句,抛出任何错误,但是从不调用它们。
然而测试仍然失败并出现以下错误:
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)
如何找出问题究竟是什么,哪个承诺被拒绝并获得更有意义的追踪?
答案 0 :(得分:0)
我找到了触发错误的原因。我不得不宣传一个流,所以我把它包裹在return new Promise...
但是,承诺与常规回调具有不同的签名。回调中首先出现错误:function(err, res) { ... }
。在承诺中,它恰恰相反:new Promise(function(resolve, reject) { ... }
。
我有new Promise(function(reject, resolve) { ... }
。因此,当流完成时我正在调用resolve
,而当流有错误时调用reject
。但是,我的resolve
实际上是reject
函数而我的reject
实际上是resolve
函数,因为我将它们反转。