2

Redux ルーター バージョン ^2.1.2

反応ルーターのバージョン: "react-router": "^3.0.0"、履歴のバージョン: "history": "^4.3.0"

再現する手順

    import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware, compose } from 'redux';
import { Router, browserHistory } from 'react-router';
import { reduxReactRouter, routerStateReducer, ReduxRouter } from 'redux-router';
import reduxThunk from 'redux-thunk';
import { createHistory } from 'history';

import rootReducer from './core/rootReducer';
import routes from './core/routes';

import * as axios from './utils/axios.js';

import { AUTH_USER } from './authentication/types';

const store = compose(applyMiddleware(reduxThunk),
    reduxReactRouter({ routes, createHistory })
)(createStore)(rootReducer);

const token = localStorage.getItem('token');

if (token) {
    store.dispatch({ type: AUTH_USER });
}

ReactDOM.render(
    <Provider store={store}>
        <ReduxRouter>

            {routes}

        </ReduxRouter>
    </Provider>
    , document.querySelector('.main')
);

エラーを返すindex.js:34416 Uncaught TypeError: createHistory is not a function(…)

解決策はありますか?


import { createHistory } from 'history';に変更後import createHistory from 'history/createBrowserHistory';

エラーはUncaught TypeError: history.getCurrentLocation is not a function

考え?

4

1 に答える 1

5

package.json で履歴のバージョン 3 を指定して、これを修正しました。

"history": "^3.0.0",

react-router 3.0.0 は履歴 3.0.0 を依存関係として指定しますが、何らかの理由で node_modules に追加されません。しかし、それを自分のpackage.jsonに明示的に追加すると、問題が解決しました。

react-router 3.0.0 はまだ履歴 v4 と互換性があるとは思わない。npm が react-router v3.0.0 package.json の依存関係を監視していない理由がわかりません

于 2016-12-11T08:07:50.607 に答える