使用Firebase在TypeScript中导入AuthError

agxfikkp  于 2023-05-18  发布在  TypeScript
关注(0)|答案(1)|浏览(126)

有没有一种方法可以检查TypeScript中使用Firebase时的错误类型为“AuthError”。
我有一个HtpsCallable函数,它有一个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");
        }
    }
}

但我会在IDE中的if语句处得到一个错误:
'AuthError'只引用一个类型,但在这里被用作值。ts(2693)
我正在使用import { AuthError } from "firebase/auth";导入AuthError。
有没有方法检查错误是否是AuthError的示例?我的导入正确吗?我在documentation中找不到有用的信息
谢谢你

wribegjk

wribegjk1#

您链接的API文档是针对node.js客户端SDK的。这与您的代码正在调用的node.js的Firebase Admin SDK不同。adminSDK不会抛出AuthError,也不会在任何地方声明错误对象的类型,甚至在它自己的getUser API文档中也是如此。
如果你看一下Admin SDK文档,它说:
如果提供的电子邮件不属于现有用户,或者由于任何其他原因无法获取用户,Admin SDK将抛出错误。有关错误代码的完整列表,包括说明和解决步骤,请参阅Admin Authentication API Errors
如果您进一步深入研究源代码,您将看到它实际上抛出了一个FirebaseAuthError对象,该对象没有出现在公共API文档中。所以,如果你想要一个类型安全的错误,看起来你只能靠自己了。但你总是可以深入了解该对象的属性以了解更多信息。

相关问题