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

How can I catch a firebase auth error with firebase admin

我有以下try catch

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

但是我收到一条错误消息

Object is of type 'unknown'.

在 error.code

此代码之前运行良好。如何解决?

我找到了这个

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

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

我尝试指定任何类型

然后我尝试检查错误是否是 Error 的一个实例,上面写着

Property 'code' does not exist on type 'Error'.

错误只是说 error 的类型未知。

try {
  // ...
} catch (error: unknown) {
  // unknown --> ^^^
}

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

然后你设置User defined type guards to specify type for the error that is being thrown. You can import FirebaseError from @firebase/util as in this issue.

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

try {
  // ...
} catch (error: unknown) {
  if (error instanceof FirebaseError) {
     console.error(error.code)
  }
}

你能试试这个吗:

try {
  user = await admin.auth().getUserByEmail(inputEmail);
} catch (error:unknown) {
  
  if (error instanceof Error) {
      if(error.code !== "auth/user-not-found") throw new Error("authentication failed");
  
  }
}

请检查这个docs