【问题标题】:React Routes Not working on Heroku, but Are working LocallyReact Routes 不在 Heroku 上工作,但在本地工作
【发布时间】:2021-04-26 14:38:13
【问题描述】:

这个问题已经被其他人回答了一百万次,但到目前为止似乎没有任何效果。大多数答案都包含 server.js 文件的代码。我的应用程序具有 Ruby on Rails 后端和带有 JavaScript 和 React 的前端,但没有 server.js 文件。我的问题是,是否应该有一个解决路线不能在 Heroku 上工作但在本地工作的问题?如果没有,如何解决这个问题?如果我需要创建一个 server.js 文件,而当我通过链接导航到其他路线时一切正常(只是当我直接转到 url 时不是),但如果我需要的话,我当然会感到沮丧。直到现在我才知道这个文件。

App.js 下面

import React, { Component } from 'react'
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'
import 'semantic-ui-css/semantic.min.css';
import Articles from './components/Articles'
import Home from './components/Home'
import NotFound from './components/NotFound'
import NavBar from './components/Navbar'
import ChessBoard from './components/chess/ChessBoard'
import Info from './components/Info'
import './App.scss'

class App extends Component {
  render () {
    return <div className="app">
      <div className="router">
      <Router>
        <NavBar/>
      <Switch>
        <Route path='/' exact component={Home} />
        <Route path='/articles' exact component={Articles} />
        <Route path='/chess' exact component={ChessBoard} />
        <Route path='/info' exact component={Info} />
        <Route component={NotFound} />
      </Switch>
    </Router>
    </div>
    </div>
  }
}

export default App

而且,我添加了一个 static.json 文件,带有和不带有 clean_urls 设置。

{
    "root": "build/",
    "routes": {
      "/**": "index.html"
    }
}

谢谢

【问题讨论】:

    标签: reactjs heroku routes local


    【解决方案1】:

    一般来说,路由器工作在开发模式而不工作在生产模式是由于错误使用publicPath(或某些构建工具中的basepath)造成的。

    你给我的信息太少,我只能做出主观猜测

    您的前端在本地工作只是因为它在/ 上提供服务,而不是在远程服务器上工作,因为它在诸如/app 之类的基本路径下提供服务。 在大多数构建工具中,默认基本路径是/

    如果您使用的是 webpack,请使用 publicPath 设置。

    更新:由于您使用的是 React-router,请使用basename

    【讨论】:

    • 感谢您的回复。我没有使用 webpack。这一切对我来说都很有意义。以前从未这样做过,问题是,我应该在哪里编辑基本路径?您使用 webpack 为我提供了一个很好的答案,但我也从未使用过。进入它,我有点认为 Heroku 会处理这个问题,但我想知道我应该安装类似 webpack 的东西吗?我不确定我还能提供哪些其他相关信息,但我很乐意尝试。
    • 关键是您的前端如何在远程服务器中提供服务。换句话说,最终网址中是否有任何前缀。也许您可以使用环境变量来存储前缀,并将其放在所有根路径的前面。
    猜你喜欢
    • 2020-01-25
    • 2017-06-05
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2013-03-29
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多