Javascript 专门定义hashHistory,但---无法读取未定义(…)的属性“getCurrentLocation”

Javascript 专门定义hashHistory,但---无法读取未定义(…)的属性“getCurrentLocation”,javascript,reactjs,webpack,react-router,react-router-redux,Javascript,Reactjs,Webpack,React Router,React Router Redux,我一辈子都搞不懂为什么这个设置不起作用。我已经尝试解决这个问题10个小时了。我正在使用历史记录3.2.1、react router 3.0.2和react router redux 4.0.7、webpack 1.14.0 这个设置在开发中工作得非常好,但是一旦打包就不起作用了,因为看起来hashHistory没有定义。用于生产和开发的configureStore没有本质上的不同 所有涉及的变量都是在devtools确认执行时定义的。我认为问题在于加载我的routes.js可能会看到下面的图片

我一辈子都搞不懂为什么这个设置不起作用。我已经尝试解决这个问题10个小时了。我正在使用历史记录3.2.1、react router 3.0.2和react router redux 4.0.7、webpack 1.14.0

这个设置在开发中工作得非常好,但是一旦打包就不起作用了,因为看起来hashHistory没有定义。用于生产和开发的configureStore没有本质上的不同

所有涉及的变量都是在devtools确认执行时定义的。我认为问题在于加载我的routes.js可能会看到下面的图片

任何人能提供的任何帮助都将不胜感激。谢谢你的阅读

错误:

configureStore.production.js

Index.js

尝试从包依赖项卸载历史npm模块

反应路由器依赖项:

React路由器已经依赖于它,将随React路由器安装一起安装正确的历史记录版本

您不需要单独安装它

试一试

然后

install --save react-router@your_version
再说一遍


检查是否有效。

谢谢您的回复!不幸的是,我安装它是为了解决这个问题。使用react路由器中内置的历史记录会产生相同的结果。是否已正确卸载?只是要求确保这个问题不是其他问题。你检查过你的package.json是否有正确的依赖项吗?是的,我能告诉你的一切都有正确的依赖项。npm没有通知我任何错误、无效对等点、缺少依赖项等,我自己也找不到任何错误。
import { applyMiddleware, createStore, compose } from 'redux';
import { responsiveStoreEnhancer } from 'redux-responsive';
import thunk from 'redux-thunk';
import { routerMiddleware, push } from 'react-router-redux';
import rootReducer from '../reducers';
import storage from '../utils/storage';
import * as noteActions from '../actions/notes_actions';

var createHistory = require('history').createHashHistory;

const hashHistory = createHistory();


const actionCreators = {
  ...noteActions,
  push,
};


const router = routerMiddleware(hashHistory);

const enhancer = compose(
  responsiveStoreEnhancer,
  applyMiddleware(thunk, router),
  storage(),
);

export default function configureStore(initialState: Object | void) {
  return createStore(rootReducer, initialState, enhancer);
}
import _ from 'lodash';
import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import storage from 'electron-json-storage';
import { syncHistoryWithStore } from 'react-router-redux';
import * as applicationUtils from './utils/functions';
import configureStore from './store/configureStore';
import myRoutes from './routes';
import './app.global.css';

var Router = require('react-router').Router;

var createHistory = require('history').createHashHistory;


let applicationState;
let stateKeyPresent;
let createStore;
let myHistory;
const hashHistory = createHistory();

function createStoreFunction() {
    createStore = configureStore(applicationState);
    myHistory = syncHistoryWithStore(hashHistory, createStore);
    render(
        <Provider store={createStore}>
        <Router history={myHistory} routes={myRoutes} />
        </Provider>,
        document.getElementById('root')
        );
}

storage.keys((err, keys) => {
    if (err) throw err;

    for (let i = 0; i < keys.length; i++) {
        if (keys[i] === 'state') {
            stateKeyPresent = keys[i];
        }
    };
});

let getStoredState = new Promise(function(resolve,reject) {
    storage.get('state', (err, data) => {
        if (!stateKeyPresent) {
            applicationState = {};
            resolve();
        } else if (data) {
            applicationState = JSON.parse(data);
            resolve();
        } else {
            applicationState = {};
            resolve();
        }
    });
});

getStoredState.then(() => {
    createStoreFunction()
});
  "dependencies": {
    "history": "^3.0.0",
    "hoist-non-react-statics": "^1.2.0",
    "invariant": "^2.2.1",
    "loose-envify": "^1.2.0",
    "warning": "^3.0.0"
  },
npm uninstall --save history react-router 
install --save react-router@your_version