我有一个使用 react 路由器的应用程序。我已经设置了我的开发环境来使用它,当我想刷新页面或服务器自行完成时,我没有问题,但是当我进行生产构建时。如果任何用户使用应用中的刷新按钮,将会出现 404 错误。
我知道在服务器中(我的产品版本将在 ISS srv 中),应用程序尝试访问的 React 路由器创建的路由不存在,那么我该如何解决这个问题?
我需要做什么以及如何做?
我对此还很陌生。
感谢您的时间和帮助!
最佳答案
我将尝试解释 react 路由器如何管理您的应用程序的状态。
假设您有以下路由器
<Router>
<Route to="/" component={Home}>
<Route to ="/about" component={About} />
</Route>
<Router>
假设您位于应用程序的主页,即 /
。现在,假设使用主页上的 Link
导航到 /about
url。这将由您的 react 路由器提供服务。所以一切正常。
现在,当您位于 /about
路线时,您会刷新页面。现在,网络浏览器像任何页面请求(无论是否是单页面应用程序)都会向您的后端服务器发送请求以获取页面。因此,您需要在后端配置路由以用于第一页加载。
现在你必须使用 webpack 来编译你的 React 组件并获得捆绑输出,对吗?你把这个放在你的html文件里了吗?现在,所有路由仅提供此 html 文件。
当您拥有已编译的 JS 文件时,当页面在 react-router
上呈现时,会自动呈现页面。
现在配置路由有多种方法。其中之一是在后端添加所有路由,这些路由使用包含您的 React 代码的已编译 JavaScript 呈现相同的 html 文件。另一种方法是使用 nginx
之类的东西并仅从那里返回 html。
关于javascript - 如何使用react-router处理生产构建中的刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41243120/