在基本服务器上运行React-Router站点

时间:2018-01-05 17:12:40

标签: javascript node.js reactjs webpack react-router

我可能对事情的运作方式有一个基本的误解,所以请耐心等待。

项目

我已经建立了一个包含NPM,Webpack,React和react-router的小型网站。该网站有六个由反应组件生成的仅限内容的页面。每个页面都通过react路由器提供服务,这意味着我可以直接访问localhost:8080 / page-2并获得我要在该页面显示的页面。

问题

它运行良好,但问题是我只能在本地运行服务器时使用它,使用描述的技术进行设置here

我尝试使用http-server运行该网站,看看我是否可以将我的项目传递给我的客户端,以便在他运行此服务器的任何服务器上运行。这需要一个非常不干涉的发布,但我担心我的客户端服务器需要属于某种类型,或者需要以特定方式进行配置。

我知道我可能错误地构建了这个。是否有一种很好的方法来构建React(带有react-router)站点,以便启动是一个简单的拖放过程?

1 个答案:

答案 0 :(得分:-1)

<强>问题

造成问题的原因是react-router。如果您不使用任何路由,服务器会为您提供index.html,然后使用react(javascript)处理您希望的任何静态或动态内容。   当您使用react-router进行路由时,每次单击链接时,它都会将新URL推送到您的浏览器中。服务器不知道您运行客户端(浏览器)应用程序并尝试进入指定的此url /目录。   这意味着您选择的任何形式的启动,它必须要么处理它,或者您必须指定它需要服务index.html,无论当前的URL是什么。有很多方法可以做到这一点,例如在我的Node应用程序中,我有:

app.get('*', function(req, res) {
  res.sendFile(path.join(__dirname, 'index.html'));
});

<强>摘要

服务器不知道它是客户端应用程序。它会尝试为您提供不存在的文件/网址。您必须告诉它始终提供index.html