Firebase Auth дает мне ошибку при попытке разрешить обещание - PullRequest
0 голосов
/ 20 марта 2019

Мне нужна помощь с этой функцией Google Auth ... У меня есть метод doCreateUserWithEmail и пароль в firebase.js (React), который выглядит следующим образом.

doCreateUserWithEmailAndPassword = (email, password) => {
 this.auth
  .createUserWithEmailAndPassword(email, password)
  .then(response => console.log(response))
  .catch(err => console.log(err));};

Когда я беру тогда .then и ниже, и иприкрепить его к signUp.js вот так…

onSubmitHandler = event => {
event.preventDefault();
const { email, passwordOne } = this.state;
this.props.firebase.doCreateUserWithEmailAndPassword(email, passwordOne)
  .then(response => console.log(response))
  .catch(err => console.log(err));
this.props.history.push(ROUTES.HOME);

};

Я получаю эту ошибку ..

TypeError: Cannot read property 'then' of undefined
SignUpFormBase._this.onSubmitHandler
src/components/signUp/signUp.js:31
 28 | onSubmitHandler = event => {
 29 |   event.preventDefault();
 30 |   const { email, passwordOne } = this.state;
 > 31 |   this.props.firebase.doCreateUserWithEmailAndPassword(email, 
 passwordOne)
 | ^  32 |     .then(response => console.log(response))
 33 |     .catch(err => console.log(err));
 34 |   this.props.history.push(ROUTES.HOME);
 View compiled

и да, я удалил ее из doCreateUserWithEmailAndPasswordкогда я получаю сообщение об ошибке ... но функция успешно регистрирует пользователя в Firebase, и если я убираю .then и .catch, он работает нормально.

Почему я получаю эту ошибку?

1 Ответ

1 голос
/ 20 марта 2019

Вы ничего не возвращаете с doCreateUserWithEmailAndPassword, поэтому он возвращает undefined, а вызов .then() на undefined вызывает ошибку, которую вы видите.

Просто верните Promise из doCreateUserWithEmailAndPassword, и это должно исправить:

doCreateUserWithEmailAndPassword = (email, password) => {
  return this.auth
    .createUserWithEmailAndPassword(email, password)
    .then(response => console.log(response))
    .catch(err => console.log(err));
};
...