response-redux-firebase error 'Экземпляр Firebase еще не существует. Проверьте свою функцию создания сообщения.

Я использую в своем проекте response-redux-firebase и хочу интегрировать firebase в react-thunk. Все работает нормально на локальном компьютере, но при развертывании проекта на хостинге Firebase возникла ошибка.

Неперехваченная ошибка: экземпляр Firebase еще не существует. Проверьте свою функцию создания сообщения.

В чем проблема?

store.js

import { createStore, compose, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import { reduxFirestore, getFirestore } from 'redux-firestore';
import { reactReduxFirebase, getFirebase } from 'react-redux-firebase';

import rootReducer from './reducers/index';
import fbConfig from '../fbConfig';

/* eslint-disable no-underscore-dangle */
const composeEnhancers =
  process.env.NODE_ENV !== 'production' &&
  typeof window === 'object' &&
  window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
    ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({})
    : compose();
/* eslint-enable */

const enhancer = composeEnhancers(
  applyMiddleware(
    thunk.withExtraArgument({
      getFirebase,
      getFirestore
    })
  ),
  reduxFirestore(fbConfig),
  reactReduxFirebase(fbConfig, {
    useFirestoreForProfile: true,
    userProfile: 'users'
  })
);

const configureStore = preloadedState =>
  createStore(rootReducer, preloadedState, enhancer);

const store = configureStore({});

export default store;

fbConfig.js

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

const firebaseConfig = {
  apiKey: ...,
  authDomain: ...,
  databaseURL: ...,
  projectId: ...,
  storageBucket: ...,
  messagingSenderId: ...,
  appId: ...
};

firebase.initializeApp(firebaseConfig);
firebase.firestore().settings({});

export default firebase;

редукторы / индекс

import { combineReducers } from 'redux';
import { firestoreReducer } from 'redux-firestore';
import { firebaseReducer } from 'react-redux-firebase';

import auth from './auth';

const rootReducers = combineReducers({
  auth,
  firestore: firestoreReducer,
  firebase: firebaseReducer
});

export default rootReducers;

person Irina Vdomike    schedule 18.09.2019    source источник
comment
Я думаю, что когда вы выбираете composeEnhancers на основе среды, вам не нужно вызывать compose () или __REDUX_DEVTOOLS_EXTENSION_COMPOSE __ ({}), просто поставьте compose, когда вы вызываете composeEnhancers в следующей строке кода   -  person Muhammad Ali Raza    schedule 21.09.2019
comment
@ Мухаммед Али Раза, спасибо! вот ответ!   -  person Irina Vdomike    schedule 23.10.2019


Ответы (1)


Это потому, что вы не передаете reduxFirestore (fbConfig) для создания

Это может вам помочь. Проверьте эту ссылку на github https://github.com/prescottprue/react-redux-firebase/issues/620#issuecomment-458344113.

person Prajyot Kawade    schedule 17.01.2021