javascript - Firebase Cloud Functions – JavaScript/Typescript Promise reject() 问题
问题描述
我正在使用 Cloud Functions 方法,例如:
export const someCallableCloudFunction = functions.https.onCall((data, context) => {
[…]
return new Promise((resolve, reject) => {
[…]
if (someStatement) {
resolve("resolveDataString")
} else {
reject({ status: "error", code: "429", message: "someErrorMessage" })
}
})
})
并用以下方式调用它们:
firebase.functions().httpsCallable("someCallableCloudFunction")(/*some args*/)
.then(data => { /* data = "resolveDataString" */ })
.catch(error => { /* here's the problem */ })
问题:这是调用方法的客户端中的错误:[Error: INTERNAL]
。这就是 Firebase Cloud Functions 控制台(模拟器!)中错误日志的样子:
{
"status": "error",
"code": "429",
"message": "Unhandled error",
"severity": "ERROR"
}
resolve()
工作得很好,但是reject()
1) 没有正确打印 Cloud Functions 方法中定义的错误对象,并且 2) 没有将错误对象提供给客户端。相反,客户收到[Error: INTERNAL]
.
我是否必须同时使用resolve()
解决和拒绝以及定义可由客户处理的语句?
解决方案
如文档中所述:
为确保客户端获得有用的错误详细信息,请通过抛出(或返回被拒绝的 Promise)实例从可调用对象中返回错误
functions.https.HttpsError
。
和
如果您的函数抛出 HttpsError 以外的错误,您的客户端将收到错误消息 INTERNAL和内部代码。
推荐阅读
- node.js - NestJS SyntaxError:无法在模块外使用导入语句
- python - 是否可以在同步拉取 pubsub 时取消确认消息
- windows - 如何使用ansible将文件从文件服务器复制到windows节点?
- c# - 取消任务会引发“任务已取消”AggregateException。为什么?
- javascript - 如何更新 td 标题 jquery 的某些部分
- python - 导入 pysftp 问题
- conv-neural-network - 修剪神经网络层以实现 f% 稀疏性 - TensorFlow2
- arrays - 用于排列的大 for 循环
- graphql - 表单单击上的 GraphQL 突变未触发
- python - 在 tkinter 中更改为非模态