如何让 Express 服务器使用 React 路由?

How to make Express server use React routes?

之前,我的服务器 运行 在端口 5000 上,我的 React 应用程序 运行 在端口 3000 上。我会通过端口 3000 访问它,它会对端口进行 API 调用5000.

我现在添加了这个,这样服务器就会为反应构建提供服务:

但我现在遇到的问题是,应用程序上的所有路由器都无法正常工作。当我转到 http://localhost:5000/ 时,我的主页显示正常,但是如果我转到 http://localhost:5000/1 或其他任何地方,它说它无法获取这些页面。

这意味着我的路由器会启动并加载正确的组件:

我是 MERN 堆栈的新手,这是我第一次尝试让服务器发送构建文件。我应该搜索什么来解决这个问题?我怎样才能解决这个问题?我的猜测是我必须重写 app.get 才能发送正确的文件,但我的构建只有一个文件,所以我不知道该怎么做。我宁愿不必重写我的整个服务器。

这里没有 .htaccess 也没有 nginx 和任何其他 URL 重定向器。你可以用快递处理:

app.get('*', (req,res) =>{
  res.sendFile(path.join(__dirname+'../poll/build/index.html'));
});

在你的快递路线之后。

React 路由在浏览器上做路由。但在这里路由是在服务器端完成的。 你应该总是 return index.html 在 React 应用程序中,无论你请求哪个 url。

如果你想同时使用服务器端路由和浏览器路由,你可以在 react 中使用 HashRouting

https://reacttraining.com/react-router/web/api/HashRouter