Контекстный путь загрузки Spring не работает с маршрутизатором браузера React

#reactjs #spring-boot #react-router

Вопрос:

У меня есть приложение React, которое упаковано в Spring Boot jar. Структура внутри банки после сборки выглядит следующим образом

 /static/bundle.js
/static/index.html
 

В конфигурации весенней загрузки для визуализации пользовательского интерфейса я добавил

 @Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("forward:/index.html");
}
 

Внутри приложения React

 <BrowserRouter basename="/">
  <Switch>
    <Route path="/" component={ShoppingCart} />
    <Route path="/recap" component={Recap} />
    <Route path="/confirm" component={ConfirmPayment} />
  </Switch>
</BrowserRouter>
 

Это работает нормально , я могу получить доступ к приложению по корневому пути http://localhost:8088/ . Все дальнейшие навигации также работают как /резюме.

Теперь я добавил имя контекста в Spring application properties server.servlet.ContextPath=/демо и изменения кода, как показано ниже

 @Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/demo").setViewName("forward:/index.html");
}

<BrowserRouter basename="/demo">
      <Switch>
        <Route path="/" component={ShoppingCart} />
        <Route path="/recap" component={Recap} />
        <Route path="/confirm" component={ConfirmPayment} />
      </Switch>
</BrowserRouter>
 

Это успешно отобразит корневую страницу на http://localhost:8088/demo
Но если я попытаюсь перейти к экрану обзора [история.нажмите({путь: «/обзор»….]), он не сможет найти маршрут. URL-адрес изменен на http://localhost:8088/demo/recap , но страница не загружена.

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