如何使用Firebase Admin捕获Firebase Auth错误并解决TypeScript类型报错
解决方案
报错原因
- TypeScript 4.0及以上版本开启严格模式时,
catch块捕获的error默认类型为unknown,不允许直接访问任意属性,这是触发Object is of type 'unknown'报错的核心原因。 - 原生
Error类型没有定义code属性,所以仅判断error instanceof Error后访问code仍然会触发类型报错。
正确修复步骤
步骤1:导入对应错误类型
你使用的是Firebase Admin Auth SDK,直接从对应包导入FirebaseAuthError类型即可:
import type { FirebaseAuthError } from "firebase-admin/auth";
步骤2:添加类型守卫做类型收窄
在catch块中先判断捕获的错误是不是FirebaseAuthError的实例,确认类型后再访问code属性:
try { user = await admin.auth().getUserByEmail(inputEmail); } catch (error) { if (error instanceof FirebaseAuthError) { if (error.code !== "auth/user-not-found") { throw new Error("authentication failed"); } } else { // 处理非Firebase抛出的其他异常 throw new Error("authentication failed"); } }
临时备选方案(不推荐)
如果不需要严格类型校验,可以直接将error断言为any快速解决问题,但会丢失类型安全保障:
try { user = await admin.auth().getUserByEmail(inputEmail); } catch (error: any) { if(error.code !== "auth/user-not-found") throw new Error("authentication failed"); }
内容的提问来源于stack exchange,提问作者anonymous-dev
相关产品推荐
相关产品推荐

