#reactjs #nginx
#reactjs #nginx
Вопрос:
все!
Я пытаюсь развернуть приложение react для производства.
Мой случай.
В рабочей среде мое приложение будет иметь динамический базовый путь, и я изменяю его при сборке.
Пример:
- example.com/basepath
- example.com/basepath2
мой package.json
...
"scripts": {
"build:basepath": "PUBLIC_URL=basepath react-app-rewired build",
"build:basepath2": "PUBLIC_URL=basepath2 react-app-rewired build",
}
В моих маршрутах задается базовое имя с динамическим базовым путем
мой файл nginx.conf
server {
listen 80;
server_name _;
error_page 400 404 405 =200 @40*_json;
location @40*_json {
default_type application/json;
return 200 '{"code":"1", "message": "Not Found"}';
}
location ~ /basepath{
root /usr/share/nginx/html;
try_files $uri /basepath/index.html;
}
}
Я могу получить доступ к приложению с помощью example.com/basepath . Его работа
Если я получу доступ example.com/basepath / получить пустую страницу
доступ example.com/basepath , фрагменты загружаются в example.com/basepath/statics/chank ….
https://i.imgur.com/OHvMOeH.jpg
доступ example.com/basepath / url-адрес фрагментов неверен example.com/basepath/basepath/statics/chank ….
https://i.imgur.com/7WyAr7i.png
Когда маршруты изменяются ссылками на приложения, все в порядке
https://i.imgur.com/BBUfZWL.jpg
Я не знаю, есть ли ошибка в nginx или в маршрутизаторе react
Есть идея?
извините за мой английский, и это моя первая тема
Ответ №1:
Вы пробовали использовать HashRouter вместо BrowserRouter?
Комментарии:
1. это проверенный ответ, поэтому он, вероятно, правильный в данном случае, но это помогло бы будущему пользователю, если бы вы немного подробнее объяснили, почему это изменение решает проблему 🙂