9

I'm trying to create a project in React and I'm using Firebase. In my react-redux-firebase project one line of code making error but I couldn't fix that. How could I fix this "TypeError: Object(...) is not a function"

I have searched for this problem but couldn't fix the problem.

I'm following a tutorial where the react version is 16.4.1. I'm not sure this is the problem or not

index.js file

import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import * as serviceWorker from "./serviceWorker";
import { createStore, applyMiddleware, compose } from "redux";
import rootReducer from "./store/reducers/rootReducer";
import { Provider } from "react-redux";
import thunk from "redux-thunk";
import { reduxFirestore, getFirestore } from "redux-firestore";
import { reactReduxFirebase, getFirebase } from "react-redux-firebase";
import fbConfig from "./config/fbConfig";

const store = createStore(
  rootReducer,
  compose(
    applyMiddleware(thunk.withExtraArgument({ getFirebase, getFirestore })),
    reduxFirestore(fbConfig),
    reactReduxFirebase(fbConfig)
  )
);

if I comment out the reatReduxFirebase() then it works fine but I need this to work

You could find all codes here: https://github.com/martuza-shimul/React-Blog-app

I'm getting this error every time:

TypeError: Object(...) is not a function
Module../src/index.js
i:/Learning new things/react/pma/src/index.js:17
  14 | const store = createStore(
  15 |   rootReducer,
  16 |   compose(
> 17 |     applyMiddleware(thunk.withExtraArgument({ getFirebase, getFirestore })),
  18 |     reduxFirestore(fbConfig),
  19 |     reactReduxFirebase(fbConfig)
  20 |  

I'm not sure how to fix this. A little bit of help/hint really be appreciated.

Community
  • 1
  • 1
Martuza Shimul
  • 115
  • 1
  • 5

4 Answers4

15

Please use this npm packages
npm packages compatibility issue

npm i --save react-redux@5.1.1 react-redux-firebase@2.2.4
Jay Vaghasiya
  • 1,585
  • 2
  • 6
  • 21
4

This is a react-redux-firebase v2.x.x coding pattern and you probably have v3.x.x installed.

  1. Check which version of react-redux-firebase you are using:
    npm ls react-redux-firebase
  1. If the version is 3.0.0 or higher, you need to migrate your code to the new coding pattern. See React-Redux-Firebase v3.x.x Migration Guide for detailed instructions.
YEG
  • 307
  • 1
  • 8
1

The reactReduxFirebase store enhancer is removed in the version v3 and above. You can now create firebase instance using context providers. The same can now be done as:

const store = createStore(
  rootReducer,
  compose(
   applyMiddleware(thunk.withExtraArgument({ getFirebase, getFirestore })),
   reduxFirestore(fbConfig)
 )
);

const rrfProps = {
firebase,
config: fbConfig,
dispatch: store.dispatch
}

const App = () => (
  <Provider store={store}>
    <ReactReduxFirebaseProvider {...rrfProps}>
      <Todo />      // your Component
    </ReactReduxFirebaseProvider>
  </Provider>
 );

As of now the 'reduxFirestore' is working fine so I want to leave it as it is but I assume the same will happen to it in coming days. So its a good idea to omit compose and reduxFirestore(fbConfig) and instead use:

import { createFirestoreInstance } from 'redux-firestore'

and add createFirestoreInstance to rrfProps as below:

const rrfProps = {
firebase,
config: rrfConfig,
dispatch: store.dispatch,
createFirestoreInstance 
}

For more information checkout: http://react-redux-firebase.com/docs/v3-migration-guide.html#remove-createFirebaseConnect-and-createFirestoreConnect

0

Option 01- adjust npm package versions for react-redux & react-redux-firebase

npm install react-redux@5.1.1 react-redux-firebase@2.2.4

Option 02- Refer v3 ( http://react-redux-firebase.com/docs/v3-migration-guide.html )