使用 Firebase 在 TypeScript 中导入 AuthError

Importing AuthError in TypeScript using Firebase

有没有一种方法可以在使用 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");
        }
    }
}

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

'AuthError' only refers to a type, but is being used as a value here.ts(2693)

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

有没有办法检查错误是否是 AuthError 的一个实例?我的导入正确吗?我在 documentation

中找不到有用的信息

谢谢

您链接到的 API 文档是针对 node.js 客户端 SDK 的。这与您正在调用的 node.js 的 Firebase Admin SDK 不同。 admin SDK 不会抛出 AuthError,也不会在任何地方声明错误对象的类型,即使在 getUser.

自己的 API 文档中也是如此

如果您查看 Admin SDK documentation,它表示:

If the provided email does not belong to an existing user or the user cannot be fetched for any other reason, the Admin SDK throws an error. For a full list of error codes, including descriptions and resolution steps, see Admin Authentication API Errors.

如果您深入研究 source code,您会发现它实际上抛出了一个 FirebaseAuthError 对象,该对象没有出现在 public API 文档中。所以,如果你想要一个类型安全的错误,看来你只能靠自己了。但您始终可以直接进入该对象的属性以了解更多信息。