【问题标题】:Running a React-Router Site on Basic Server在基本服务器上运行 React-Router 站点
【发布时间】:2018-06-15 12:56:26
【问题描述】:

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

项目

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

问题

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

我尝试使用http-server 运行该站点,看看是否可以将我的项目传递给我的客户,以便在他运行它的任何服务器上运行。这需要一个非常轻松的启动,但我担心我的客户端的服务器需要是某种类型,或者需要以特定方式配置。

我知道我可能构建不正确。未来有没有什么好的方法来构建 React(使用 react-router)站点,以便启动是一个简单的拖放过程?

【问题讨论】:

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


    【解决方案1】:

    问题

    导致您的问题的原因是反应路由器。如果您不使用任何路由,服务器会为您提供 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 服务。

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 2018-03-23
      • 2019-11-03
      • 2013-10-11
      • 1970-01-01
      相关资源
      最近更新 更多