Node.js 如何在heroku上使用反应路线?

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

我有一个简单的web应用程序,它是由CreateReact应用程序创建的

所有的页面制作和反应路线工作在本地都很好

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'))
  })