Вызов API игнорируется после createUserWithEmailAndPassword в Firebase 7.15.5 - PullRequest
0 голосов
/ 09 июля 2020

В 7.15.5 Firebase и 16.13.1 React кажется, что любой вызов API Firebase в предложении «then» createUserWithEmailAndPassword полностью игнорируется. Код является примером моего отредактированного файла App. js после запуска приложения create-response-app (другие файлы не были изменены). Печатаются «здесь1» и «здесь2», но нет других сообщений. Если я вернусь к Firebase 7.9.0, он будет работать правильно.

В примечаниях к выпуску Firebase, 7.15.5 говорит: «Исправлена ​​ошибка, которая иногда приводила к сбою операций Cloud Firestore во время смены токена аутентификации» и 7.15. 1 говорит: «Исправлена ​​проблема, из-за которой клиент не мог подключиться к бэкэнду сразу после того, как пользователь вошел в систему» ​​Так что, похоже, это было проблемой раньше.

Я связался с командой поддержки Firebase, и они не смогли воспроизвести проблему (в той среде, которую они использовали, а не в React), и они сказали мне спросить здесь. Этот код не работает в 7.15.5, но тот же код работает в 7.9.0.

import React, { useState } from 'react';
import './App.css';

import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
import 'firebase/storage';

firebase.initializeApp({
  //REDACTED
});

const fireAuth = firebase.auth();
const fireData = firebase.firestore();

function App() {
  const [email, setEmail] = useState('');
  const [pass, setPass] = useState('');

  const registerUser = () => {
    //see if the email is allowed to register
    fireData.collection('future_users').doc(email).get().then(documentSnapshot => {
      const futureUserData = documentSnapshot.data();
  
      //if allowed then create user
      if (documentSnapshot.exists && futureUserData) {
        fireAuth.createUserWithEmailAndPassword(email, pass).then(userCredential => {
          //if user object is not null (dont know why it would be) then create user document
          if (userCredential.user) {
            const newUser = {
              id: userCredential.user.uid,
              email: email,
              firstName: futureUserData.firstName,
              lastName: futureUserData.lastName,
              admin: futureUserData.admin
            }

            console.log('here1');
            fireData.collection('users').doc(newUser.id).set({
              email: newUser.email,
              firstName: newUser.firstName,
              lastName: newUser.lastName,
              admin: newUser.admin
            }).then(() => {
              console.log('added user doc');
            }).catch(() => {
              console.log('failed to add user doc');
            })
            console.log('here2');

          }
        }).catch(error => {
          console.log('failed to create user');
        })
      } else {
        console.log('email not allowed to register');
      }
    }).catch(error => {
      console.log('failed to get future user doc');
    })
  }

  return (
    <div>
      <input onChange={event => setEmail(event.target.value)} />
      <input onChange={event => setPass(event.target.value)} />
      <button onClick={registerUser}>SUBMIT</button>
    </div>
  );
}

export default App;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...