У меня есть проект с Spring Boot в качестве бэкэнда и Angular в качестве фронта. Я собираю проект angular и копирую его содержимое в папку ресурсов Spring Boot, а в моем контроллере загрузки Spring я возвращаю index.html, созданный angular.
@Controller
public class IndexController {
@Autowired
ISupportedLanguagesRepository is;
@RequestMapping(value = { "/", ""})
public String getIndex() {
return "index.html";
}
}
А все остальные контроллеры - это вызовы REST api на бэкэнд. Все маршруты работают хорошо, когда я запускаю Spring Boot и Angular Project по отдельности.
Но когда я упаковываю их вместе, маршруты работают только тогда, когда вся навигация осуществляется через приложение. Но когда я напрямую пытаюсь получить URL-адрес, он дает мне это
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Но он работает, когда я перехожу по этому маршруту из приложения.
Как мне решить эту проблему? Даже при обновлении на любой странице возникает та же ошибка.
вы пробовали включить HashLocationStrategy? RouterModule.forRoot(routes, {useHash: true})
ошибка выглядит как ошибка Spring и, возможно, связана с тем, что, когда вы переходите по этому URL-адресу напрямую, вы пропускаете вызовы сервера (ajax), которые были сделаны, когда вы перешли на этот URL-адрес из приложения, и которые инициализировали состояние в услуги / компоненты и так далее. Когда вы переходите по URL-адресу напрямую, возможно, эти вызовы не выполняются, состояние не инициализировано, и, следовательно, вы получаете ошибку.




Эта проблема решена, как упоминал Дирк, с помощью {useHash: true} в маршрутах
пожалуйста, проверьте угловое развертывание angular.io/guide/deployment#server-configuration