React Native: не создано приложение Firebase «[ПО УМОЛЧАНИЮ]» — вызовите Firebase App.initializeApp() (приложение / no-app)

#javascript #firebase #react-native #react-redux

#javascript #firebase #react-native #react-redux

Вопрос:

Я пытаюсь реализовать постоянный вход в систему для своего приложения. Я столкнулся с ошибкой

Приложение Firebase «[ПО УМОЛЧАНИЮ]» не создано — вызовите Firebase App.initializeApp() (приложение / no-app)

Я попытался решить это, изучив существующие проблемы, но не совсем вписывается в этот вариант использования. Я инициализировал свою firebase из App.js а затем после перехода к заставке (AuthStack на основе состояния) Я вызываю создателя действия из componentDidMount внутри заставки. В этом создателе действия я проверяю состояние аутентификации (если пользователь возвращает значение, отличное от null, я обновляю состояние для перехода в AppStack).

App.js

 class App extends Component {
  componentDidMount() {
    const firebaseConfig = {
      apiKey: 'AIzaSyDOpO3TjIN4lCCufMZWKs7eZYd86SJB0o8',
      authDomain: 'vocabs-a3f7e.firebaseapp.com',
      databaseURL: 'https://vocabs-a3f7e.firebaseio.com',
      projectId: 'vocabs-a3f7e',
      storageBucket: 'vocabs-a3f7e.appspot.com',
      messagingSenderId: '938659592890',
      appId: '1:938659592890:web:7d309f3751892982066083',
    };
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
  }

  render() {
    return (
    <Provider store={createStore(reducers, {}, applyMiddleware(ReduxThunk))}>
      <NavigationContainer>
        <MainRoute />
      </NavigationContainer>
    </Provider>
  );
} 
  

Заставка

 class SplashScreen extends Component {
  componentDidMount() {
    setTimeout(this.renderSignInForm, 1000);
    //this.renderSignInForm();
  }

  renderSignInForm = () => {
    console.log('inside async');
    this.props.persistantSignIn();
    //const userData = this.checkUser();
    if (this.props.userData) {
      console.log('hit user true'   this.props.userData);
    } else {
      // No user is signed in.
      console.log('hit user false'   this.props.userData);
      this.props.navigation.navigate('SignInForm');
    }
  };

  render(){
    return(
      /*some Code Here*/
    );
}
  

ActionCreator

 export const persistantSignIn = () => {
  return (dispatch) => {
    firebase
      .auth()
      .onAuthStateChanged.then((userData) => {
        console.log(userData);
        dispatch({
          type: PERSISTANT_SIGN_IN,
          payload: userData,
        });
      })
      .catch((error) => {
        console.log('something is wronggggggggg');
        throw error;
      });
  };
};
  

MainRoute.js

 class MainRoute extends Component {
  render() {
    return this.props.isSignedIn ? <AppStack /> : <AuthStack />;
  }
}