React路由器仅适用于Chrome

时间:2018-02-21 13:13:58

标签: reactjs react-redux react-router-v4

我的React应用程序在生产环境中的路径有问题,它们只适用于Chrome。在所有其他浏览器中,路由始终重定向到LoginPage组件。我不明白为什么在开发环境中路由适用于所有浏览器。

我的路线是这样的:

<Switch>
  <GuestRoute
    location={location}
    path="/signup"
    exact
    component={SignupPage}
  />
  <GuestRoute
    location={location}
    path="/forgot_password"
    exact
    component={ForgotPasswordPage}
  />
  <GuestRoute
    location={location}
    path="/reset_password/:token"
    exact
    component={ResetPasswordPage}
  />
  <UserRoute
    location={location}
    path="/"
    exact
    component={DashboardPage}
  />
  <GuestRoute location={location} component={LoginPage} />
</Switch>

其中三个组件使用Redux,所以我尝试使用包装器&#34; withRouter&#34;来解决问题。根据{{​​3}}。但没有奏效。

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我的问题的解决方案是改变提供静态文件的方式。

在:

app.use(express.static(`${__dirname}/build`));
app.get('*', function(req, res) {
    res.redirect('/');
});

后:

app.use(express.static(path.join(__dirname, 'build')));
app.get('/', function (req, res) {
    res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

感谢Michel,他帮助我找到了我的错误。