You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase JS SDK v10如何获取不带auth/前缀的AuthErrorCode

解决Firebase JS SDK v10重置密码接口的错误捕获问题

你当前的问题核心是错误地使用了error.message来匹配AuthErrorCodes,正确的做法应该是利用FirebaseError的code属性进行判断,这才是SDK定义的标准错误标识。

错误原因分析

AuthErrorCodes中定义的常量(比如AuthErrorCodes.INVALID_EMAIL对应"auth/invalid-email")是Firebase SDK抛出的FirebaseError对象的code属性值,而非message属性。你代码里拿error.message(值为"INVALID_EMAIL")去和AuthErrorCodes.INVALID_EMAIL比较,自然匹配不上。

另外需要注意:输入未注册邮箱时,SDK抛出的错误码应该是AuthErrorCodes.USER_NOT_FOUND(对应"auth/user-not-found"),而非INVALID_EMAIL——你看到的HTTP响应里的"INVALID_EMAIL"是底层接口的返回文本,SDK会将其封装为标准的FirebaseError对象,所以不要直接依赖HTTP响应的字段做判断。

修正后的代码示例

public resetPassword(email: string, actionCodeSettings: ActionCodeSettings): Promise<void> {
  return sendPasswordResetEmail(this.auth, email, actionCodeSettings);
}

public async handleResetPassword(): Promise<void> {
    try {
      await this.resetPassword(this.email, this.actionCodeSettings);
    } catch (error) {
      // 先判断是否为FirebaseError类型
      if (error instanceof FirebaseError) {
        // 用error.code匹配AuthErrorCodes常量
        if (error.code === AuthErrorCodes.INVALID_EMAIL) {
          // 处理无效邮箱格式的逻辑
        } else if (error.code === AuthErrorCodes.USER_NOT_FOUND) {
          // 处理邮箱未注册的逻辑
        }
        // 可继续添加其他错误码的判断
      }
    }
  }
}

关键注意事项

  • 永远用FirebaseError.code做错误逻辑判断,message是面向用户的提示文本,可能会有本地化或格式变化,不适合作为判断依据。
  • AuthErrorCodes中的所有常量都是SDK公开的标准错误码,覆盖了所有认证场景的错误类型,直接使用即可,无需自行拼接或处理前缀问题。

内容的提问来源于stack exchange,提问作者DarkMikey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:52:53