React-Router 4 не обрабатывает прямые ссылки или обновленные страницы - PullRequest
0 голосов
/ 11 июня 2018

Эта проблема поднималась раньше, но существующие ответы все еще не работают для меня.Мое приложение использует React-Router 4 с Node / Express на задней панели.

Я прочитал объяснение Тайлера Макгинниса .Я использую Browser Router и то, что Макгиннис называет «универсальным» решением.Мои маршруты выглядят так:

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.

Редактировать: Я решил эту проблему, жестко закодировав ссылки CSS и связки вindex.html, то есть заменив <script type="text/javascript" src='bundle/bundle.js'></script> на <script type="text/javascript" src='http://localhost:8357/bundle/bundle.js'></script>.При развертывании мне придется изменить эти ссылки.Не элегантное решение, но оно работает.Есть ли лучший способ?

1 Ответ

0 голосов
/ 29 июня 2018

Я на самом деле не верю, что это имеет какое-либо отношение к React Router.

Если вы хотите, чтобы он использовал путь относительно корня вашего каталога, вам нужно убедиться, что у вас есть косая черта.в начале.

Например: вместо использования bundle/bundle.js вы захотите убедиться, что используете /bundle/bundle.js.

Надеюсь, что это работает для вас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...