反应路由器v4,在路由中找不到
问题描述:
我正在尝试使用反应路由器v4。我使用的版本是4.1.1。当页面加载它呈现Home组件时,它应该如此。但是,如果我浏览到localhost:8080/about
或localhost:8080/test2
,我得到这个在浏览器反应路由器v4,在路由中找不到
Cannot GET /about
我App.jsx
文件:
import React from 'react';
import { BrowserRouter, Route, Link } from 'react-router-dom';
import Home from '../components/Home.jsx';
import Test from '../components/Test.jsx';
const Test2 =() => (
<div>test2 component</div>
);
const App = (props) => (
<BrowserRouter>
<div className="container-fluid">
<Route exact path="/" component={Home} />
<Route path="/about" component={Test} />
<Route path="/test2" render={Test2} />
</div>
</BrowserRouter>
)
export default App;
的WebPack配置:
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HtmlWebpackPluginConfig = new HtmlWebpackPlugin({
template: './client/index.html',
filename: 'index.html',
inject: 'body'
});
module.exports = {
entry: [
'./client/index.js'
],
output: {
path: __dirname + '/dist',
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, loader: 'babel-loader', exclude: '/node_modules/'},
{ test: /\.jsx$/, loader: 'babel-loader', exclude: '/node_modules/'}
]
},
plugins: [HtmlWebpackPluginConfig],
devServer: {
contentBase: './dist',
historyApiFallback: true,
}
};
答
尝试增加output.publicPath = '/'
到你的配置。下面是一个示例webpack配置,下面使用^并修复刷新问题。如果你很好奇“为什么”,this将会有所帮助。
var path = require('path');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './app/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'index_bundle.js',
publicPath: '/'
},
module: {
rules: [
{ test: /\.(js)$/, use: 'babel-loader' },
{ test: /\.css$/, use: [ 'style-loader', 'css-loader' ]}
]
},
devServer: {
historyApiFallback: true,
},
plugins: [
new HtmlWebpackPlugin({
template: 'app/index.html'
})
]
};
问题在于你的服务器。你使用'webpack-dev-server'还是其他的。显示相关配置。 – Panther
是的,我已编辑并包含我的webpack。是的,即时通讯使用webpack-dev-server – Roi
没有提及'webpack-dev-server'你可以显示你的package.json如何启动你的dev服务器吗? – Panther