【问题标题】:"TypeError: Object(...) is not a function" react-redux-firebase“TypeError: Object(...) is not a function” react-redux-firebase
【发布时间】:2020-03-01 17:42:00
【问题描述】:

我正在尝试在 React 中创建一个项目,并且我正在使用 Firebase。在我的 react-redux-firebase 项目中,一行代码出错,但我无法解决。我该如何解决这个“TypeError: Object(...) is not a function”

我已经搜索过这个问题,但无法解决问题。

我正在关注反应版本为 16.4.1 的教程。我不确定这是不是问题

index.js 文件

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)
  )
);

如果我注释掉 reatReduxFirebase() 那么它工作正常,但我需要这个工作

您可以在这里找到所有代码:https://github.com/martuza-shimul/React-Blog-app

我每次都会收到这个错误:

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 |  

我不确定如何解决这个问题。一点帮助/提示真的很感激。

【问题讨论】:

    标签: reactjs firebase npm react-redux react-redux-firebase


    【解决方案1】:

    请使用这个 npm 包
    npm 包兼容性问题

    npm i --save react-redux@5.1.1 react-redux-firebase@2.2.4
    

    【讨论】:

    • 它有效。非常感谢你帮助我@Jay
    • 妈妈你最棒了
    【解决方案2】:

    这是一个 react-redux-firebase v2.x.x 编码模式,您可能已经安装了 v3.x.x。

    1. 检查您使用的是哪个版本的 react-redux-firebase:
        npm ls react-redux-firebase
    
    1. 如果版本是 3.0.0 或更高版本,您需要将代码迁移到新的编码模式。有关详细说明,请参阅 React-Redux-Firebase v3.x.x Migration Guide

    【讨论】:

      【解决方案3】:

      reactReduxFirebase 存储增强器在 v3 及更高版本中被移除。您现在可以使用上下文提供程序创建 firebase 实例。现在可以这样做:

      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>
       );
      

      到目前为止,“reduxFirestore”工作正常,所以我想保持原样,但我认为未来几天也会发生同样的情况。因此,最好省略 compose 和 reduxFirestore(fbConfig) 而是使用:

      import { createFirestoreInstance } from 'redux-firestore'
      

      并将 createFirestoreInstance 添加到 rrfProps 如下:

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

      欲了解更多信息结帐:http://react-redux-firebase.com/docs/v3-migration-guide.html#remove-createFirebaseConnect-and-createFirestoreConnect

      【讨论】:

        【解决方案4】:

        选项 01- 调整 react-redux &amp; react-redux-firebase 的 npm 包版本

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

        选项 02- 参考 v3 (http://react-redux-firebase.com/docs/v3-migration-guide.html)

        【讨论】: