Bluebird Promise:错误不是函数
Bluebird Promise: error is not a function
出于某种我无法找出的原因,这段简单的代码不起作用。
new Promise(function (resolve, reject) {
resolve();
}).then(function() {
console.log("then: ")
}).error(function(err) {
console.log("err: ", err)
})
它给了我
Uncaught TypeError: (intermediate value).then(...).error is not a function
如果我将 error
替换为 catch
,它运行良好。不过我宁愿不赶上。
我在这里错过了什么?
将此评论作为答案,因为它原来是解决方案...
如果 .error()
不存在,那么您可能没有使用 Bluebird promise,因为 .error()
不是 Promise 标准的一部分,因此您可能只有一个内置的 promise 而不是蓝鸟的承诺。
检查以确保 Bluebird 正确包含在您的项目中。
如果您包含另一个使用不同 promise 库的包,也会发生这种情况。
就我而言,我有一个需要 Swagger 的 Node 应用程序。 Swagger 使用 Q promise 库。
Bluebird 和 Q 部分兼容。直到我开始使用 Q 没有的 Bluebird API 部分,问题才出现。特别是,Bluebird 有 "return",而 Q 没有。 (如果您想浪费一些时间,请尝试搜索 "bluebird return is not a function"。)
有一个项目"bluebird-q"旨在让 Bluebird 取代 Q。
特别是对于 Swagger,有一个标志可以让 Swagger 使用承诺。它可能适用于 promisifyAll Swagger 而不是使用 usePromise 配置。
出于某种我无法找出的原因,这段简单的代码不起作用。
new Promise(function (resolve, reject) {
resolve();
}).then(function() {
console.log("then: ")
}).error(function(err) {
console.log("err: ", err)
})
它给了我
Uncaught TypeError: (intermediate value).then(...).error is not a function
如果我将 error
替换为 catch
,它运行良好。不过我宁愿不赶上。
我在这里错过了什么?
将此评论作为答案,因为它原来是解决方案...
如果 .error()
不存在,那么您可能没有使用 Bluebird promise,因为 .error()
不是 Promise 标准的一部分,因此您可能只有一个内置的 promise 而不是蓝鸟的承诺。
检查以确保 Bluebird 正确包含在您的项目中。
如果您包含另一个使用不同 promise 库的包,也会发生这种情况。
就我而言,我有一个需要 Swagger 的 Node 应用程序。 Swagger 使用 Q promise 库。
Bluebird 和 Q 部分兼容。直到我开始使用 Q 没有的 Bluebird API 部分,问题才出现。特别是,Bluebird 有 "return",而 Q 没有。 (如果您想浪费一些时间,请尝试搜索 "bluebird return is not a function"。)
有一个项目"bluebird-q"旨在让 Bluebird 取代 Q。
特别是对于 Swagger,有一个标志可以让 Swagger 使用承诺。它可能适用于 promisifyAll Swagger 而不是使用 usePromise 配置。