使用 Firebase 在 TypeScript 中导入 AuthError

Mat*_*ler 5 firebase typescript firebase-authentication google-cloud-functions firebase-admin

使用 Firebase 时,有没有办法检查 TypeScript 中的错误是否属于“AuthError”类型。

我有一个 Https Callable 函数,它有一个 try/catch 块,其中包含以下内容:

try{
    await admin.auth().getUser(data.uid); // will throw error if user does not exist
    await admin.auth().deleteUser(data.uid);
} catch (error) {
    if(error instanceof AuthError) { // error here
        if (error.code === "auth/user-not-found") {
            logger.error(`Error: auth/user-not-found, Given user ID does not exist in Firebase Authentication`);
            throw new https.HttpsError("not-found", "Given user ID does not exist in Firebase Authentication");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我的 IDE 中的 if 语句会出现错误:

'AuthError' 仅指类型,但在此处用作值。ts(2693)

我正在使用import { AuthError } from "firebase/auth";导入 AuthError。

有没有办法检查错误是否是 AuthError 的实例?我的导入正确吗?我在文档中找不到有用的信息

谢谢

Dou*_*son 4

您链接到的 API 文档适用于 Node.js 客户端 SDK。这与您代码调用的适用于 Node.js 的 Firebase Admin SDK 不同。admin SDK 不会抛出 AuthError,也不会在任何地方声明错误对象的类型,即使在其自己的 getUser API 文档中也是如此 API 文档中也是如此。

如果你查看Admin SDK 文档,它会说:

如果提供的电子邮件不属于现有用户或由于任何其他原因无法获取用户,则 Admin SDK 会引发错误。有关错误代码的完整列表(包括说明和解决步骤),请参阅管理身份验证 API 错误

如果您进一步深入研究源代码,您会发现它实际上抛出了一个 FirebaseAuthError 对象,该对象没有出现在公共 API 文档中。因此,如果您想要类型安全错误,看来您只能靠自己了。但您始终可以通过查看该对象的属性来了解更多信息。