如何将Firestore在async/await中抛出的错误码转为可读消息?求可用接口
Firebase错误码转人类可读消息方案
一、Firestore相关错误处理接口
Firestore抛出的错误对象自带几个核心属性,可用于错误识别和消息转换:
code:标准化错误码,格式为firestore/<具体错误标识>,比如firestore/permission-deniedmessage:SDK内置的简短描述消息,部分场景可直接展示给用户,但可能不够贴合业务场景details:可选属性,包含错误的额外细节信息
Firebase SDK没有专门提供统一的错误消息转换接口,不过你可以基于code属性自定义映射表来实现友好提示。
二、注意:你的示例是Firebase Auth场景
你给出的登录代码用的是Firebase Auth的signInWithEmailAndPassword接口,这类错误的code前缀是auth/,处理逻辑和Firestore类似,同样可以通过code来匹配自定义消息。
三、具体实现示例
1. 构建错误消息映射表
先定义一个包含常见错误码和对应友好提示的对象:
// 涵盖Firestore和Auth的常见错误映射 const errorMessageMap = { // Firestore错误 "firestore/permission-denied": "您没有访问该数据的权限,请检查权限配置", "firestore/not-found": "请求的数据不存在", "firestore/already-exists": "该数据已存在,无法重复创建", "firestore/invalid-argument": "请求参数无效,请检查输入内容", // Firebase Auth登录相关错误 "auth/user-not-found": "未找到该用户,请确认邮箱是否正确", "auth/wrong-password": "密码错误,请重新输入", "auth/user-disabled": "该账户已被禁用,请联系管理员", "auth/invalid-email": "邮箱格式不正确,请检查输入" };
2. 在catch块中处理错误
修改你的登录函数,加入错误转换逻辑:
async onSubmitLogin(e: any) { try { const user: UserCredential = await signInWithEmailAndPassword(this.auth, e.value["Email"], e.value["Password"]); // 登录成功后的业务逻辑 } catch (error: any) { const errorCode = error.code; // 优先用自定义消息,没有则用SDK自带消息,最后兜底默认提示 const friendlyMessage = errorMessageMap[errorCode] || error.message || "发生未知错误,请稍后重试"; // 替换为你的错误弹窗组件调用 alert(friendlyMessage); } }
四、补充说明
- 错误码区分:Firestore错误码前缀是
firestore/,Auth是auth/,注意不要混淆不同模块的错误码 - 扩展映射:你可以根据业务需求,补充更多错误码的映射关系,覆盖更多场景
- 完整错误码:所有可能的错误码可以在Firebase SDK的类型定义或官方文档中查阅
内容的提问来源于stack exchange,提问作者xinthose
相关产品推荐
相关产品推荐

