我正在尝试为我的应用设置路由器,并使基本/入口点正常工作(貌似)。似乎当我尝试开始添加子路线时,它正在破碎。我现在有一个很直接的设置。我正在使用react + redux,我的渲染看起来像:
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory} >
<Route path="/" component={comp1.Component}>
<Route path="test" component={comp2.Component} />
</Route>
</Router>
</Provider>,
// eslint-disable-next-line no-undef
document.getElementById('app')
);
我在localhost:8080上运行webpack dev服务器,并且它没有问题地服务第一条路由,但是当我去localhost:8080 / test时,我得到一个Cannot GET /test
。
这是我的webpack配置:
var path = require('path');
var webpack = require('webpack');
module.exports = {
devtool: 'eval',
entry: [
'webpack-dev-server/client?http://localhost:3000',
'webpack/hot/only-dev-server',
'./client/app.jsx'
],
output: {
path: path.join(__dirname, ''),
filename: 'bundle.js',
publicPath: '/'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.optimize.DedupePlugin(),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
}
})
],
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: "babel-loader",
include: __dirname,
query: {
presets: [ 'es2015', 'react', 'react-hmre' ]
}
}]
}
}
不确定我在这里做错了什么,不胜感激任何帮助。谢谢!
答案 0 :(得分:2)
React Router使用HTML5历史记录API。这意味着404响应需要提供/index.html
。
文档https://github.com/rs/SDWebImage。您需要将其添加到module.exports
对象:
devServer: {
historyApiFallback: true
}
请注意,这仅适用于CLI,在使用Node.js API时,您需要将其添加为第二个参数:
var server = new WebpackDevServer(compiler, { historyApiFallback: true });