快速/反应部署到Heroku - 不会转发正确地对路由器做出反应 - 但仅限于移动设备

时间:2018-06-19 09:36:01

标签: reactjs express heroku react-router express-router

我真的用这个把头撞在桌子上。

我有一个nodejs / express应用程序,可以将所有非路由器请求转发到react应用程序的index.html,以便react-router可以处理它们。

我在app.js文件末尾执行以下操作

app.get('*', function(request, response) {
   response.sendFile(path.resolve(__dirname, '/client/build', 'index.html'));
});

所以从理论上说,应该将未在其他地方拾取的任何东西转发到我的反应路由器,其配置如下

<BrowserRouter>
    <div>
    <Route exact path='/' render={(props) => <AppWrapper auth={auth} {...props} />}/>
    <Route path='/auth' render={(props) => {
      this.handleAuthentication(props);
      return <Callback auth={auth} {...props} />
    }}/>

    </div>
</BrowserRouter>

所以我有以下情况

  • 当在笔记本电脑或台式机上使用网络浏览器时,调用https://myurl/auth无论是部署到heroku还是本地,都可以正常工作.-我会在浏览器中显示
  • 在我的本地网络上拨打本地运行的应用程序实例可以在手机上运行 - 我可以在访问http://192.168.1.112/auth

  • 时获取
  • 某些手机浏览器拨打https://myurl.herokuapp.com/auth不起作用。他们触发快递404并返回一个未找到的,换句话说,通往此的路线......

app.use(function(req, res, next) {
 var err = new Error('Not Found');
 err.status = 404;
    next(err);
});

我绝对不知道为什么在某些情况下,只在(部分)移动设备上,并且仅在heroku部署上才会出现此问题。我确实认为这与服务工作者有关,但即使服务工作者被禁用,它仍然会做同样的事情。

感谢任何帮助。很高兴根据需要添加更多代码,但我不确定哪些额外代码会有用。

0 个答案:

没有答案