【问题标题】:react router url issues after deployment部署后反应路由器 url 问题
【发布时间】:2018-05-16 00:36:27
【问题描述】:

我正在使用 React 路由器来更改路由。这在我本地开发时效果很好。

我的路由器代码如下所示,一切正常。

<Router>
    <Route exact path="/" render={(routeProps)=> <Homepage {...routeProps} />}/>
    <Route path="/graph" render={(routeProps)=> <AboutPage {...routeProps} />}/>            
</Router>

我遇到的问题是当我将它部署到我的 github 页面时,http://exampleuser.github.io/react-project

由于项目位于 react-project 文件夹中,因此 "/" 指的是 http://exampleuser.github.io/ 的实际路线

任何人都可以建议路径的外观,以便在部署时可以正常工作吗?

【问题讨论】:

  • 您尝试过使用&lt;Switch&gt; 吗? import &lt;Switch&gt; from 'react-router-dom' 然后将所有内容包装在 &lt;div&gt; 中,然后将所有 &lt;Route&gt; 包装在 &lt;Switch&gt;
  • 我有,但我认为这与 Switch 无关 - 我相信一旦我部署后它与路线有关,因为它不再是 "/"
  • "/"&lt;Route&gt;放在最后而不是第一个?
  • 你是否有机会使用 create react 应用程序?
  • @randomguy04 我是

标签: javascript reactjs ecmascript-6 routing react-router


【解决方案1】:

你可以在你的路由器中使用basename prop,只要确保你只在生产而不是在开发中使用它(你可以为此使用环境变量)你的路由器应该如下所示:

<Router basename="your-react-project">
  {/* routes */}
</Router>

如果您使用的是 create_react_app,则可以像这样使用环境变量 process.env.PUBLIC_URL(在开发中它是空的,因此它适用于机器人开发和生产):

<Router basename={process.env.PUBLIC_URL}>
  {/* routes */}
</Router>

我实际上有一个project running 使用这种配置并且工作得很好。

【讨论】:

  • 所以当它是我的 github 存储库根目录下的项目时它实际上工作正常,但它位于子文件夹中,即 - http://exampleuser.github.io/react-project
  • 您尝试过第一种方法吗?在哪里可以手动设置基本名称?
  • 是的,伙计,刚刚部署到那里就可以了!垒手是一种享受!绿勾出现!附带问题,你在哪里设置 process.env.PUBLIC_URL 变量?
  • 很高兴听到这个消息。您不必自己设置,他们在这里简要解释了它的工作原理github.com/facebookincubator/create-react-app/blob/master/…
【解决方案2】:

这是一个简单的解决方法,我在这里遇到了同样的问题,我是如何解决的。

1- 如果您使用的是 apache,请转到 cPanel 或服务器中的根目录。并创建一个 .htaccess 文件

打开文件并添加以下代码。

#jerryUrena is awesome RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L]

在此之后,您的网站应该以相同的方式运行。

【讨论】:

    猜你喜欢
    • 2018-07-07
    • 2019-02-04
    • 2017-03-24
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多