React-Router 4不处理直接链接或刷新页面

时间:2018-06-11 19:37:35

标签: reactjs react-router-v4

此问题已经出现过,但现有的答案仍然不适合我。我的应用程序使用React-Router 4,后端使用Node / Express。

我看过Tyler McGinnis's explanation。我正在使用浏览器路由器和McGinnis称之为" Catch-all"解。我的路线看起来像这样:

app.use(express.static(path.join(__dirname, '../client/public')));

app.post('/auth/signin', signin);

// more Auth and CRUD routes

app.get('/*', function(req, res) {
  res.sendFile(path.join(__dirname, '../client/public/index.html'), function(err) {
    if (err) {
      res.status(500).send(err)
    }
  })
});

当我手动输入或刷新http://localhost:8357/admin等路线时,此解决方案可以正常工作。但是,当我尝试使用更长的路线(例如http://localhost:8357/admin/create)时,应用会崩溃。据我所知,浏览器会加载index.html,但会在http://localhost:8357/admin/bundle中查找包。

修改我通过在index.html中对css和bundle链接进行硬编码来修复此问题,即将<script type="text/javascript" src='bundle/bundle.js'></script>替换为<script type="text/javascript" src='http://localhost:8357/bundle/bundle.js'></script>。当我部署时,我将不得不更改这些链接。不是优雅的解决方案,但它的工作原理。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我实际上不认为这与React Router有关。

如果要使用相对于目录根目录的路径,则需要确保在开始处使用正斜杠。

例如:您将要确保使用bundle/bundle.js。而不是使用/bundle/bundle.js

希望对您有用!