首页 > 解决方案 > react-router-dom 不适用于 Express 后端的生产环境

问题描述

我在生产环境中遇到了 react-router-dom 的重定向问题。这是我开发的网站:链接。如果您单击其中一个问题,应用程序将重定向到该问题的链接。但是,如果您将问题的链接粘贴到地址栏中并按 Enter 键,例如,当您单击this时。发生 404 错误。本地主机中不会发生此问题

我做了一些研究,似乎 react-router-dom 不适用于生产环境。路由器的代码如下:

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';

      <Router>
              <Route exact path='/' component={Home} />
              <Route exact path='/about' component={About} />
              <Route exact path='/contact' component={Contact} />
              <Route exact path='/help' component={Help} />

              <Switch>
                <Route exact path="/login" component={Login} />
                <Route exact path="/register" component={Register} />
                <Route exact path="/users" component={Users} />

                <Route exact path="/users/:user_id" component={Profile} />
                <Route exact path="/tags" component={TagsPage} />

                <PrivateRoute exact path="/questions/ask" component={CreateQuestion} />
                <Route exact path="/questions/:question_id" component={QuestionsPage} />
              </Switch>
      </Router>

在快速服务器上,我将所有请求重定向到构建后的index.html文件:

if (process.env.NODE_ENV === 'production') {
  app.use(express.static('client/build'));
  app.get('*', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
  })
}

但由于某种原因,它仍然无法正常工作。我在这里做错了什么?

标签: javascriptreactjsexpress

解决方案


推荐阅读