# #node.js #typescript #firebase #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");
}
Но я получаю сообщение об ошибке, говорящее
Object is of type 'unknown'.
Об ошибке.код
Этот код и раньше работал отлично. Как это можно решить?
Я нашел это
https://firebase.google.com/docs/reference/js/v8/firebase.Ошибка в базе данных
но я не знаю, откуда я могу его импортировать.
Я попытался указать любой тип as
И я попытался проверить, была ли ошибка экземпляром ошибки, в которой говорится
Property 'code' does not exist on type 'Error'.
Комментарии:
1. Откуда у вас эта ошибка? Можете ли вы поделиться скриншотом с трассировкой стека? Также вы просматриваете документы Firebase JS SDKs. Нажмите здесь , чтобы просмотреть ошибки аутентификации администратора Firebase.
2. Это всплывающее окно с ошибкой vscode. Я действительно видел эти ошибки и пытаюсь их проверить. Но ошибка неизвестного типа и, следовательно, не имеет свойства кода
Ответ №1:
Ошибка просто говорит, что тип error
неизвестен.
try {
// ...
} catch (error: unknown) {
// unknown --> ^^^
}
Если вы используете Typescript 4.4
, то вы можете использовать флаг —useUnknownInCatchVariables, который изменяет тип переменных предложения catch по умолчанию с any
на unknown
.
Затем вы настраиваете пользовательские охранники типов, чтобы указать тип для создаваемой ошибки. Вы можете импортировать FirebaseError
из @firebase/util
как в этом выпуске.
import { FirebaseError } from '@firebase/util';
try {
// ...
} catch (error: unknown) {
if (error instanceof FirebaseError) {
console.error(error.code)
}
}
Комментарии:
1. Я попробовал это, но во время развертывания возникнет ошибка, в которой говорится
Catch clause variable cannot have a type annotation.
2. Импорт был тем, что я искал! Спасибо
Ответ №2:
Можете ли вы попробовать это с помощью этого:
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");
}
}
Пожалуйста, проверьте эту документацию об этом.
Комментарии:
1. Похоже, это не работает, я получаю ту же ошибку. Я добавил скриншот.