Эта проблема поднималась раньше, но существующие ответы все еще не работают для меня.Мое приложение использует 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>
.При развертывании мне придется изменить эти ссылки.Не элегантное решение, но оно работает.Есть ли лучший способ?