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

Angular CLI 8更新-URL不再以base href作为前缀,angular,angular-i18n,angular-cli-v8,Angular,Angular I18n,Angular Cli V8,问题 将Angular应用程序更新到版本8(包括Angular CLI)后,URL不再以Angular.json文件中提供的基本href作为前缀,这实际上破坏了我们的应用程序 先前的、期望的行为 在本地提供法语版本的应用程序时,在localhost:8000上打开一个网页会将我重定向到localhost:8000/fr,并且我可以从应用程序中导航到的每个URL也会加上前缀/fr/ 新的错误行为 在本地提供法语版本的应用程序时,在localhost:8000上打开一个网页会导致一个空页面,上面说无

问题

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

先前的、期望的行为

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

新的错误行为

在本地提供法语版本的应用程序时,在
localhost:8000
上打开一个网页会导致一个空页面,上面说
无法获取/
,因为缺少
/fr
。当我立即在
localhost:8000/fr
打开页面时,我可以看到登录页面,但由于我们的登录流程涉及第三方,当我从上述第三方返回到我们的应用程序时,我只看到一个空白页面,上面写着
无法获取/login
(因为
/fr/
缺失)

我迄今为止尝试过的方法(非详尽列表,但有两种最有希望的方法)

  • AppModule
    将使用
    LOCALE\u ID
    作为其值并删除
    angular.json
    配置中的
    baseHref
    设置。这 工作“有点”,因为我被从
    localhost:8000重定向到
    e、 g.
    localhost:8000/fr/
    ,但它也会导致不需要的重定向 因为我假设路由查找逻辑发生在基href之前 令牌被注入,因此它无法识别URL并重定向 到默认路线
  • angular.json
    配置中提供
    deployUrl
    值,但无效
类似问题

基本上是同一个问题。不幸的是,所有这些问题都已经解决了,没有提供一个关于如何恢复旧行为的实际解决方案。

因此,正如我从中了解到的,事实上,旧行为本来是不可能的


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

我在上看到了关于这一点的讨论——这是否意味着部署到prod将始终且仅具有一个基本href“/”?@eflat恐怕这个问题太笼统了-这取决于您的Angular CLI设置以及web服务器设置。但在我的例子中:不,它仍然具有您在
angular.json
中指定的基本href。我们通过与一个新的“ng new”项目进行比较,对问题进行了排序。tsconfig.json中的baseUrl已经更改,我们很难将其作为罪魁祸首。