2017-04-01 12 views
4

私はreact-router-dom 4.0.0ライブラリを使用しようとしています。しかし、それは私にこのエラーを送信します。未定義のプロパティ 'location'を読み取ることができません

Uncaught TypeError: Cannot read property 'location' of undefined

browserHistoreでこの問題が発生しているようです。私がreact-router 2.x.xを使用する前に、すべては問題なくでした。 は、これはこれは私のルート

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反応し、この取得した構成を設定し表現する完全な再です私の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') 
) 

ですあなたのコードで想定しているように、以前のバージョンと互換性がありません。それで、新しいメジャーバージョン(V4)にアップグレードして、あなたのアプリを正常に動作させることはできないはずです。 documentationをチェックアウトするか、V2/3にダウングレードする必要があります。そのバージョンは、あなたの中で、その後4よりも大きい場合はここでは、右方向に

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

これは私に質問することから私を救った。どうもありがとう。しかし、 'react-router-dom 'の' {BrowserRouterとしてのRouterRouter}'は 'react-router-dom'から '{BrowserRuber、RouteとしてのRouter} '以外のものをインポートします。 – Jeril

+0

@Jeril Fixed!ありがとう。 –

1
  1. を始める必要がありますいくつかのコードは、package.json

  2. に反応し、ルータ-DOMのバージョンを確認していますファイルインポートBrowserRouter: - 他

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

    そのバージョンが4未満、インポートルータの場合: -

    import { Router, Route } from 'react-router-dom' 
    
関連する問題