如何让 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
之前,我的服务器 运行 在端口 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