роуты. Вебпак мне собирает бандл в dist/users/index.html. Получается, что я открываю прилу по localhost/users. В корневом компоненте у меня код
<Routes>
<Route path="users" element={<Users />} />
<Route path="users/:id" element={<div>Test</div>} />
</Routes>
Есть список юзеров, в них есть линки
<Link to={user.id} >...</Link>
При нажатии на юзера норм редиректит, но как только обновить страницу - 404. ЧЯДНТ?
что у тебя в public/index.html ?
эмм, у меня нет такой папки
где ты объявляешь ссылку на bundle.js?
в HtmlWebpackPlugin <!DOCTYPE html><html><head><meta charset="utf-8"><title>${htmlWebpackPlugin.options.title}</title></head><body><div id='${rootId}'></div></body></html> на выходе получаю html, в котором - <script defer src="../users/index.js">
Фолбек настроен локально/сервере?
пока только разработка, не настроен. Где его нужно настраивать?
В вебпаке добавить devServer: { port: 3000, hot: true, historyApiFallback: true, },
Со стороны бека, по всем урлам надо отдавать твой index. Почитай об этом.
1. В деве у меня не сработал твой способ) 2. Где почитать? Просто в гугле? Или есть какой то гайд?
Если не сработал, то значит, что-то ты делаешь не так https://stackoverflow.com/questions/43209666/react-router-v4-cannot-get-url
структуру роутов я правильно делаю в компоненте? Или как то по другому нужно делать?
Илья всё правильно говорит, nginx надо настроить так, чтобы по любому урлу отдавался index.html. Только надо учесть наличие css и js файлов
это я понял, просто у меня в деве его способ не сработал)))
у тебя на деве nginx?
devServer: { static: { directory: "./dist", }, port: 3000, hot: true, historyApiFallback: true, },
после некоторого изучения добавил - historyApiFallback: { index: "users/index.html", verbose: true, }, после запроса localhost://users/id есть запись в дев-сервере - Rewriting GET /users/269854915 to users/index.html но всё равно 404.
кажется решил. Вот так - historyApiFallback: { rewrites: [ { from: /^\/users\/.*$/, to: "/users", }, ], verbose: true, },
Обсуждают сегодня