Pie*_*ier 17 node.js firebase google-cloud-functions
我正在尝试使用可调用的云函数在 Firebase 上创建一个新用户。每当出现错误(例如:电子邮件无效)时,无论我做什么,该函数总是向我的 Firebase 应用返回相同的神秘错误:
{"error":{"status":"INTERNAL","message":"INTERNAL"}}
Run Code Online (Sandbox Code Playgroud)
在 Firebase 控制台中,我也得到了这个:
Unhandled error Error: Unknown error status: auth/invalid-email
Run Code Online (Sandbox Code Playgroud)
这没有多大意义,因为我实际上是在处理错误。这是云函数的代码:
exports.createUser = (data, context) => {
return admin.auth().createUser({
email: data.email,
password: data.password
}).catch((error) => {
throw new functions.https.HttpsError(error.errorInfo.code, error.errorInfo.message);
});
}
Run Code Online (Sandbox Code Playgroud)
如图所示我试着使用throw functions.https.HttpsError
这是什么文档建议。
我也尝试过return functions.https.HttpsError
甚至抛出我自己的错误,结果相同。
我使用了 try/catch withawait
而不是使用then()
and catch()
。结果一样。功能控制台仍然告诉我错误没有被处理,这是荒谬的。
那么在使用可调用的云函数时如何向我的用户抛出正确的错误呢?
Dou*_*son 15
看起来您正在尝试逐字传递来自 Admin SDK 的错误代码,但这不是有效的策略。仔细阅读文档 - 它会将您发送到HttpsError的API 文档以查找可发送的有效错误代码列表。该代码属性链接FunctionsErrorCode这表明有效代码列表:
“好的” | “取消” | “未知” | "无效参数" | “逾期” | “未找到” | “已经存在” | “权限被拒绝” | “资源枯竭” | “失败的前提” | “中止” | “超出范围” | “未实施” | “内部” | “不可用” | “数据丢失” | “未经认证”
Admin SDK 为您提供“auth/invalid-email”,这在此处无效。您将不得不将其转换为有效代码之一。也许“无效参数”可能是合适的。这将被进一步转换为数字 HTTP 响应代码,您将在客户端收到该代码。