2016-01-27 15 views
7

Ich habe einige Probleme bei der Arbeit mit React-Router und Webpack-Dev-Server, um geschachtelte URL-Routing zu erreichen.verschachtelte URL-Routing mit react-Router und Webpack-dev-Server

webpack.config.js

output: { 
    path: path.resolve(__dirname, 'build'), 
    publicPath: "/", <-- this enabled routing to /register/step2 
    filename: "js/bundle.js", 
}, 

routes.js

const routes = { 
    childRoutes: [ 
     { path: '/', component: Home }, 
     { path: '/login', component: Login }, 
     { path: '/register', component: Register }, 
     { path: '/register/step2', component: SecondStep }, 
    ] 
}; 

export default (<Router routes={routes} history={createBrowserHistory()} />); 

Wenn um im appliation klicken, kann ich/Registrieren/step2 bekommen, aber sobald ich getroffen refresh Im Browser fehlen meine common.js und bundle.js: 404, da versucht wird, alles aus/register/directory zu laden.

Kann jemand helfen? Vielen Dank.

Antwort

0

Wenn Sie hashHistory anstelle von createBrowserHistory() verwenden, verhindert dies, dass der Server Ihre aktuelle URL auf Ihrem Server anfordert.

export default (<Router routes={routes} history={hashHistory} />); 
+0

Gibt es nicht eine Möglichkeit, diese Hashes ohne zu erreichen? –

+0

Die Anleitung am react-Router empfiehlt die Verwendung von browserHistory über hashHistory. https://github.com/reactjs/reac-router/blob/1.0.x/docs/guides/basics/Histories.md#createbrowserhistory –

7

Ich fand es heraus. 2 Dinge, die benötigt werden, um dies zu ermöglichen.

webpack.config.js

devServer: { 
    historyApiFallback: true <-- this needs to be set to true 
} 


routes.js

const routes = { 
    childRoutes: [ 
     { path: '/', component: Home }, 
     { path: '/login', component: Login }, 
     { path: '/register', component: Register, childRoutes: [ 
      { path: 'step2', component: SecondStep }, 
     ] }, 
    ] 
}; 
+1

historyApiFallback: wahr, scheint das Problem zu lösen .. danke – pravin

+0

aber nicht mit hot reload: http://stackoverflow.com/questions/40159965/enable-single-page-app-react-hot-reload-webpack – Marc