解决react router路由不生效,首页正常,其他路由均报错:'Cannot GET / ' 问题

837 阅读1分钟

使用react router、react-router-dom 时,所有代码都按照官方文档编写正确。

例 react-router-dom v5代码:

import { BrowserRouter, Switch, Route } from "react-router-dom";
import Home from './pages/home'
import Test from './pages/test'

const App = () => (
    <React.StrictMode>
        <BrowserRouter>
            <Switch>
                <Route exact path="/" component={Home} />
                <Route path="/test" component={Test} />
            </Switch>
        </BrowserRouter>
    </React.StrictMode>
)

ReactDOM.render(<App />, document.getElementById('root'))

访问时只有首页 / 能正常访问,其他路由均不生效,如访问 /test,报错:Cannot GET /test

解决方法:

在webpack配置中增加 output.publicPath: '/'devServer.historyApiFallback: true

module.exports = {
    ...
    output: {
        ...
        publicPath: '/'
    },
    devServer: {
        historyApiFallback: true,
    },
}