Как правильно организовать раздачу статики на express.js с учетом react-router?
Пытаюсь написать веб-приложения с использованием реакта и express. Наткнулся на некоторые странности.
Вот так раздаю статику.
app.use(express.static(__dirname + './../public' ));
app.use(express.static(__dirname + './../public/js' ));
app.use(express.static(__dirname + './../public/css'));
Чтобы работало с react-router делаю так
app.use('*', (req, res) => {
res.sendFile("index.html", { root: __dirname + "/../public/"});
})
Первая проблема заключается в том, что разные браузеры как-то по разному "воспринимают" пути к файлам. Например, хром видит подключенные в index.html файлы.
Также работает и файерфокс
А Яндекс браузер нет.

Вторая проблема заключается в том, что при раздаче файлов почему-то учитывается путь из адресной строки. Простите, может неправильно формулирую, ниже скриншоты для наглядности. Если не перезагружать страницу, то роутинг работает вроде как нормально, исключая ошибку природа которой мне не совсем ясна:
Но стоит перезагрузить страницу и получаю это
Можно исправить таким образом:
app.use(express.static(__dirname + './..//public' ));
app.use(express.static(__dirname + './..//public/js' ));
app.use(express.static(__dirname + './../public/css'));
app.use("/main", express.static(__dirname + './..//public' ));
app.use("/main", express.static(__dirname + './../public/js' ));
app.use("/main", express.static(__dirname + './../public/css'));
Но есть ли какой-то более элегантный способ? Иначе придется прописывать все возможные пути. Но больше всего конечно озадачивает то, как по разному браузеры воспринимают пути к файлам. Вот еще два скрина из разных браузеров. Один и тот же путь.
Яндекс
Хром/Файерфокс/Эдж

Вот структура проекта
Ответы (2 шт):
Tут какая-то мешанина с уровнями и пути относительные.
Я бы попробовал взять HashRouter, тогда все адреса страницы будут localhost:5000/#/.... На сервер запрос хтмл будет всегда localhost:5000/, без *. Относительные пути css/js будут ресолвиться от одного места.
Но всякие SEO, history и splitting могут не работать.
Проблема была с названием путей в index.html после того как я переименовал папки из css и js в javascript и stylesheet все заработало.




