问题
将我们的 Angular 应用程序更新到版本 8(包括 Angular CLI)后,URL 不再以文件中提供的基本 href 作为前缀angular.json,这实际上破坏了我们的应用程序
以前的期望行为
在本地提供应用程序的法语版本时,打开网页localhost:8000会将我重定向到localhost:8000/fr,并且我可以从应用程序内导航到的每个 URL 也将以/fr/.
新的错误行为
在本地提供应用程序的法语版本时,打开网页localhost:8000会导致空白页面显示Cannot GET /,因为/fr缺少 。当我立即打开页面时localhost:8000/fr,我可以看到登录页面,但是由于我们的登录流程涉及第三方,当我从所述第三方返回我们的应用程序时,我只看到一个空白页面说Cannot GET /login(因为/fr/缺少) .
到目前为止我尝试过的(非详尽列表,但两种最有希望的方法)
- 在提供程序中提供一个
APP_BASE_HREFDI 令牌,该令牌AppModule将LOCALE_ID用作其值并baseHref从配置中删除设置angular.json。这在“某种程度上”起作用,因为我被重定向localhost:8000到 eglocalhost:8000/fr/,但它也会导致不需要的重定向,因为我假设路由查找逻辑发生在注入基本 href 令牌之前,因此它无法识别 URL 并重定向到默认路由。 - 在配置中提供一个
deployUrl值angular.json,但无济于事。
类似问题
https://github.com/angular/angular-cli/issues/14925基本上是完全相同的问题。不幸的是,所有此类问题都已关闭,但没有提供有关如何恢复旧行为的实际解决方案。