Ошибка: Firebase: приложение Firebase '[DEFAULT]' не создано - PullRequest
0 голосов
/ 18 июня 2019

У меня есть приложение React Native, которое использует Firebase для различных функций.Это работало отлично в течение 2 недель, пока я не получил ошибку ниже.Я ничего не изменил в App.js, поэтому не знаю, почему возникнет эта проблема.

[DEFAULT]: Firebase: приложение Firebase '[DEFAULT]' не создано - создановызовите Firebase App.initializeApp () (app / no-app).

Вот мой конфигурационный код, помещенный в мой App.js:

const firebaseConfig = {
    apiKey: '<api-key>',
    authDomain: '<app-name>.firebaseapp.com',
    databaseURL: 'https://<app-name>.firebaseio.com',
    projectId: '<project-id>',
    storageBucket: '<app-name>.appspot.com',
    messagingSenderId: '<messaging-sender-id>',
    appId: '<app-id>'
};
firebase.initializeApp(firebaseConfig);

Этот код выполняется только еслиЯ закомментирую код firebase, как показано ниже, в одном из моих компонентов:

const { currentUser } = firebase.auth();
console.log(currentUser);

Вот мой console.log(firebase.app());

enter image description here

1 Ответ

1 голос
/ 18 июня 2019

ОБНОВЛЕНИЕ У вас есть все ваши настройки конфигурации на вашем componentDidMount, они могут запускаться несколько раз, в то время как это приводит к вашей проблеме, я внес следующие изменения и работал как чудо:

Я создаю firebase.js в корне, рядом с App.js, эти файлы выглядят так

import `firebase/app`
require(`firebase/auth`)

const firebaseConfig = {
    apiKey: '<api-key>',
    authDomain: '<app-name>.firebaseapp.com',
    databaseURL: 'https://<app-name>.firebaseio.com',
    projectId: '<project-id>',
    storageBucket: '<app-name>.appspot.com',
    messagingSenderId: '<messaging-sender-id>',
    appId: '<app-id>'
};
if (!firebase.apps.length) {
   firebase.initializeApp(firebaseConfig);
}

export auth = firebase.auth()
export default firebase

И ваш App.js выглядит так:

import React, { Component } from 'react';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import reducers from './reducers';
import ReduxThunk from 'redux-thunk';
import Router from './Router';
import { auth } from './firebase' // <----

class App extends Component {
    componentDidMount () {
       this.checkAuth()
    }
    checkAuth = () {
       auth.onAuthStateChanged(function(user, err) {
          console.log(user);
            if (user) {
              console.log(user);
               Actions.signUpVerify();
            } else {
                console.log(err);
            }
      });
    }

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

export default App;

Вы не должны запускать auth для вашего метода рендеринга, потому что он может выполняться потенциально много раз.

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