我已经从HashRouter切换到BrowserRouter,并且所有导航都工作正常-除了F5。
我知道为什么会失败...。向服务器www.example.com/account发送请求将导致404,因为服务器上没有此类路径。
从我已阅读的内容中,我需要添加一个包罗万象的内容。有点不确定那是解决办法。由于请求先到达服务器,然后再到达我的javascript SPA。
我的路由是这样的:
<Switch>
<Route exact path="/" component={Dashboard} />
<Route exact path="/accounts" component={Accounts} />
<Route exact path="/accounts/:id" component={Accounts} />
<Route exact path="/account" component={AccountEditor} />
但是我觉得我需要从低处修改一些内容。我不确定这是否是服务器设置,因为刷新www.example.com/accounts/会强制在服务器上执行GET并失败,甚至在查看我的代码之前。
我认为也许webpack是问题。但是,当我使用create-react-app创建应用程序时,找不到Webpack文件。我不确定create-react-app在哪里配置了所有
。如何处理F5,或直接导航到不是/的网址? 主机运行IIS,所以我想知道是否存在web.config规则或可用于允许URL中的路径的东西-但始终从/?中获取
答案 0 :(得分:0)
React
构建包括静态文件,该文件包含.js
文件的块和单个index.html
文件。当您将其上传到传统的ngnix
服务器时,它会像在路由中一样查找文件。要覆盖它并使其工作,您需要使用用于.js
应用程序的静态文件服务器为您提供静态文件。我最常使用的是一个名为npm
的{{1}}软件包。您可以使用以下方法在服务器上安装serve
后将其安装在服务器上:
node.js
然后您可以使用以下命令来服务您的应用程序:
npm i -g serve
希望这对您有用。