2017-04-01 24 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' 
    
相關問題