2017-04-01 58 views
4

我尝试使用react-router-dom 4.0.0库。但它给我这个错误无法读取未定义的属性“位置”

Uncaught TypeError: Cannot read property 'location' of undefined

在browserHistore似乎这个问题。在使用react-router 2.x.x之前,一切都很顺利。 这是我index.js

import 'babel-polyfill' 
import React from 'react' 
import { Router, hashHistory } from 'react-router-dom' 
import { render } from 'react-dom' 
import { Provider } from 'react-redux' 
import { configureStore } from './store' 
import { routes } from './routes' 

const store = configureStore() 

render(
    <Provider store={store}> 
    <Router history={hashHistory} routes={routes} /> 
    </Provider>, 
    document.getElementById('root') 
) 

这是我的路线

import React from 'react' 
import { IndexRoute, Route } from 'react-router-dom' 
import App from './containers/App' 
import Main from './containers/Main' 
import First from './containers/First' 

export const routes = (
    <Route path='/' component={Main}> 
    <Route path='/path' component={First} /> 
    <IndexRoute component={App} /> 
    </Route> 
) 

,也为服务器端表达我设置获取配置

app.get('*', function root(req, res) { 
    res.sendFile(__dirname + '/index.html'); 
}); 

回答

8

阵营路由器V4是一个完整的重如你在代码中所假设的那样,它与以前的版本不兼容。据说,你不应该期望能够升级到一个新的主要版本(V4),并让你的应用程序正常工作。您应该查看documentation或降级到V2/3。下面是一些应该让你在正确的方向

import 'babel-polyfill' 
import React from 'react' 
import { BrowserRouter as Router, Route } from 'react-router-dom' 
import { render } from 'react-dom' 
import { Provider } from 'react-redux' 
import { configureStore } from './store' 
import App from './containers/App' 
import Main from './containers/Main' 
import First from './containers/First' 

const store = configureStore() 

render(
    <Provider store={store}> 
    <Router> 
     <Route path='/' component={Main} /> 
     <Route path='/path' component={First} /> 
    </Router> 
    </Provider>, 
    document.getElementById('root') 
) 
+0

谢谢。它帮助了我。 –

+0

它让我不再问一个问题。非常感谢。但它的'进口{BrowserRouter作为路由器,路由}从'react-router-dom';'从'react-router-dom''进口{路由器作为BrowserRouter,路由}' – Jeril

+0

@Jeril固定!谢谢。 –

1
  1. 入住反应路由器-DOM的版本中的package.json

  2. 如果其版本为大于4,然后在开始你的代码文件导入BrowserRouter: -

    import { BrowserRouter as Router, Route } from 'react-router-dom' 
    

    否则,如果它的版本低于4然后导入路由器: -

    import { Router, Route } from 'react-router-dom' 
    
相关问题