如何使用 firebase admin 捕获 firebase 身份验证错误

Mik*_*ink 4 node.js firebase typescript google-cloud-functions firebase-admin

我有以下尝试捕获

try {
  user = await admin.auth().getUserByEmail(inputEmail);
} catch (error) {
  if(error.code !== "auth/user-not-found") throw new Error("authentication failed");
}
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息

Object is of type 'unknown'.
Run Code Online (Sandbox Code Playgroud)

关于错误代码

这段代码之前工作得很好。如何解决这个问题?

我找到了这个

https://firebase.google.com/docs/reference/js/v8/firebase.FirebaseError

但我不知道可以从哪里导入它。

在此输入图像描述

我尝试将any指定为类型 在此输入图像描述

我尝试检查错误是否是 Error 的一个实例,其中显示

Property 'code' does not exist on type 'Error'.
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Dha*_*raj 5

该错误只是表明该类型error未知。

try {
  // ...
} catch (error: unknown) {
  // unknown --> ^^^
}
Run Code Online (Sandbox Code Playgroud)

如果您正在使用Typescript 4.4,那么您可以使用--useUnknownInCatchVariables标志,它将 catch 子句变量的默认类型从 更改anyunknown

然后,您设置用户定义的类型防护来指定引发的错误的类型。您可以FirebaseError本期@firebase/util中的 as导入。

import { FirebaseError } from '@firebase/util';

try {
  // ...
} catch (error: unknown) {
  if (error instanceof FirebaseError) {
     console.error(error.code)
  }
}
Run Code Online (Sandbox Code Playgroud)