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

问题描述 投票:1回答:1

问题

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

先前的期望行为

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

新的错误行为

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

到目前为止我尝试过的(非详尽清单,但是两个最有希望的方法)

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

类似问题

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

angular angular-i18n angular-cli-v8
1个回答
0
投票
因此,我从https://github.com/angular/angular-cli/issues/16179中学到了,实际上,原来的旧行为本来是不可能的。

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

© www.soinside.com 2019 - 2024. All rights reserved.