“TypeError: Object(...) is not a function”是react-redux-firebase中的错误信息。

9
我正在尝试在React中创建一个项目,并使用Firebase。在我的react-redux-firebase项目中,有一行代码导致错误,但我无法修复它。如何解决"TypeError: Object(...) is not a function"的问题?
我已经搜索了这个问题,但是无法解决它。
我正在按照一个教程进行操作,其中React版本为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 |  

我不确定如何修复这个问题,真的很需要一点帮助/提示。

4个回答

14
请使用此npm包。
npm包兼容性问题。
npm i --save react-redux@5.1.1 react-redux-firebase@2.2.4

它有效了。非常感谢@Jay帮助我。 - Martuza Shimul
马大佬,你最棒了。 - rolandforbes

5

这是一个关于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迁移指南获取详细说明。

2

在v3及以上版本中,reactReduxFirebase store enhancer已被移除。现在您可以使用上下文提供程序创建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


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接