问题
将我们的 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_HREF
DI 令牌,该令牌AppModule
将LOCALE_ID
用作其值并baseHref
从配置中删除设置angular.json
。这在“某种程度上”起作用,因为我被重定向localhost:8000
到 eglocalhost:8000/fr/
,但它也会导致不需要的重定向,因为我假设路由查找逻辑发生在注入基本 href 令牌之前,因此它无法识别 URL 并重定向到默认路由。 - 在配置中提供一个
deployUrl
值angular.json
,但无济于事。
类似问题
https://github.com/angular/angular-cli/issues/14925基本上是完全相同的问题。不幸的是,所有此类问题都已关闭,但没有提供有关如何恢复旧行为的实际解决方案。