我有一个 React 应用程序,其导航由react-router
我在开发中运行webpack-dev-server
并启用了历史回退选项。这是我在我的index.js
ReactDOM.render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<IndexRedirect to="/intro" />
<Route path="/intro" component={Intro} />
<Route path="/device" component={Device} />
<Route path="/clothing" component={Clothing} />
<Route path="/build" component={Build}>
<IndexRedirect to="/build/pattern" />
<Route path="/build/pattern" component={Pattern} />
<Route path="/build/layout" component={Layout} />
<Route path="/build/color" component={Color} />
</Route>
<Route path="/capture" component={Capture} />
<Route path="/review" component={Review} />
</Route>
</Router>
), document.getElementById('app'))
当我浏览链接时,一切正常,我可以看到嵌套路由组件按预期嵌套在其父路由组件中。例如,当我导航到/build/color
我可以看到我的App
组件嵌套Build
组件嵌套Color
组件。
它失败的地方是当我尝试点击嵌套路由中的刷新按钮时。React 完全无法加载,我收到以下错误
GET http://localhost:8080/build/app.js 404(未找到)
我的应用程序中确实没有这样的文件,但我仍然很困惑为什么它会自动查找此文件而不是从根重新加载路由。请注意,在页面上点击刷新/device
确实可以正常工作。
如果您需要有关我的设置的更多详细信息,请告诉我。谢谢!
解决方案:
我的webpack
设置实际上正在使用HtmlWebpackPlugin
which 将路径注入我的应用程序包,如下所示
<script src="app.js" type="text/javascript"></script>
我需要做的就是配置我的webpack
公共路径,publicPath: '/'
以便按如下方式注入包
<script src="/app.js" type="text/javascript"></script>