我真的用这个把头撞在桌子上。
我有一个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>
所以我有以下情况
在我的本地网络上拨打本地运行的应用程序实例可以在手机上运行 - 我可以在访问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部署上才会出现此问题。我确实认为这与服务工作者有关,但即使服务工作者被禁用,它仍然会做同样的事情。
感谢任何帮助。很高兴根据需要添加更多代码,但我不确定哪些额外代码会有用。