Node.js 如何在heroku上使用反应路线?
我有一个简单的web应用程序,它是由CreateReact应用程序创建的 所有的页面制作和反应路线工作在本地都很好Node.js 如何在heroku上使用反应路线?,node.js,reactjs,react-router,Node.js,Reactjs,React Router,我有一个简单的web应用程序,它是由CreateReact应用程序创建的 所有的页面制作和反应路线工作在本地都很好 class App extends React.Component{ render(){ return ( <Router> <div> <Menu/> <div classNa
class App extends React.Component{
render(){
return (
<Router>
<div>
<Menu/>
<div className="page-content">
<Route exact path="/" component={Hello}/>
<Route exact path="/signup" component={Register}/>
</div>
</div>
</Router>
);
}
}
及
但是当我在heroku上部署时,它没有工作。当我单击链接时,它显示无法获取/注册。您可以检查此项
您遇到的问题是,当您单击链接时,服务器试图在完整路径上查找资源。这个资源不存在
那么什么是解决方案呢?对于前端的每个请求,您都需要返回index.html,然后离开react router进行路由
在使用此代码设置的教程中:
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
您应该修改代码,使其如下所示:
app.get('/*', (req, res) => {
res.sendFile(path.resolve(__dirname + '/client/build/index.html'))
})
您需要确保所有路由都服务于
index.html
文件,而不仅仅是/
路由。
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.get('/*', (req, res) => {
res.sendFile(path.resolve(__dirname + '/client/build/index.html'))
})