Firebase v8 — как получить доступ к поставщику электронной почты, если «firebase.default.auth» не определен

# #javascript #angular #firebase #firebase-authentication #angularfire2

Вопрос:

Я использую аутентификацию Firebase AngularFire2 в проекте Ionic-Angular. Мне нужно иметь возможность повторно аутентифицировать своих пользователей, когда это необходимо, и , похоже , единственный способ сделать это-получить учетные данные пользователя, которые можно получить только через firebase.auth.EmailAuthProvider объект, который не является частью AngularFire , а только firebase сам по себе.

Для этого я использую firebase v8, на которой EmailAuthProvider должен быть найден объект firebase.default.auth.EmailAuthProvider . Однако я понимаю, что firebase.default.auth это не определено, и поэтому я не могу получить доступ EmailAuthProvider . Единственное решение, которое я нашел, — это вернуться к firebase v7, в которой к последнему можно успешно получить доступ firebase.auth.EmailAuthProvider . Я пока не могу перейти на firebase v9 из-за других проблем с совместимостью и не хочу оставлять v7, так как он дает мне множество уязвимостей высокого и среднего уровня.

Редактировать

Я получаю учетные данные таким образом:

 import * as firebase from "firebase/app";

...

firebase.default.auth.EmailAuthProvider.credential(email, password)
 

И я получаю следующую ошибку:

 Uncaught TypeError: Cannot read properties of undefined (reading 'EmailAuthProvider')
 

В моем файле package.json есть "@angular/fire": "^6.1.5" и "firebase": "^8.10.0"

TLDR

В Firebase v8, как получить доступ EmailAuthProvider или , в более общем плане, как повторно авторизовать пользователя?

Комментарии:

1. Если вы добавите свой код, это будет намного полезнее, чем жаловаться на проблему. firebase.default.auth вероятно, это должно было быть вызвано firebase.auth() .

Ответ №1:

Попробуйте изменить импорт, как показано ниже:

 import firebase from "firebase/app"; 
import "firebase/auth" // <-- make sure you have auth imported
 

Затем обратитесь к поставщику электронной почты, как это:

 firebase.auth.EmailAuthProvider.credential(email, password)