Angular CLI 8更新-不再以基本href为前缀的URL

时间:2019-11-13 14:38:17

标签: angular angular-i18n angular-cli-v8

问题

在将Angular应用程序更新到版本8(包括Angular CLI)之后,URL不再带有angular.json文件中提供的基本href前缀,这实际上破坏了我们的应用程序

以前的期望行为

在本地提供法语版本的应用程序时,在localhost:8000上打开网页会将我重定向到localhost:8000/fr,并且我可以从该应用程序中导航到的每个URL都将带有前缀{ {1}}。

新的错误行为

在本地提供法文版应用程序时,由于缺少/fr/,因此在localhost:8000上打开网页会显示一个空白页面,显示Cannot GET /。当我立即在/fr处打开页面时,可以看到登录页面,但是由于我们的登录流程涉及第三方,因此当我从所述第三方返回到我们的应用程序时,我只看到一个空白页面,上面写着{ {1}}(因为缺少localhost:8000/fr)。

到目前为止,我已经尝试过(不详尽的列表,但是有两种最有希望的方法)

  • Cannot GET /login内提供一个/fr/ DI令牌 将APP_BASE_HREF作为其值并删除的提供商 AppModule配置中的LOCALE_ID设置。这个 我从baseHref重定向到 例如angular.json,但也会导致意外的重定向 因为我假设路由查找逻辑发生在基本href之前 令牌被注入,因此它无法识别URL并重定向 到默认路由。
  • localhost:8000配置中提供localhost:8000/fr/值,无济于事。

类似问题

https://github.com/angular/angular-cli/issues/14925基本上是完全相同的问题。不幸的是,所有这些问题都已关闭,而没有提供有关如何还原旧行为的实际解决方案。

1 个答案:

答案 0 :(得分:0)

因此,正如我从https://github.com/angular/angular-cli/issues/16179中学到的那样,实际上应该首先避免了旧的行为。

在本地运行该应用程序时,一次只能运行一种语言。假设该应用默认为德语,则运行该应用将在localhost:8000提供服务。运行英语版本时,该应用程序将在localhost:8000 / en上运行。对于Angular CLI 7和8都是如此。版本8的变化仅仅是,在运行英文版并导航到localhost:8000时,它不会自动将您重定向到localhost:8000 / en。因此,对我们而言,这意味着我们仅需稍微调整开发工作流程(只需确保在正确的地址打开应用即可),由于所有语言都是实时的,因此在生产环境中实际上没有任何更改。