Angular CLI 8更新-URL不再以base href作为前缀
问题 将Angular应用程序更新到版本8(包括Angular CLI)后,URL不再以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.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.
,但它也会导致不需要的重定向 因为我假设路由查找逻辑发生在基href之前 令牌被注入,因此它无法识别URL并重定向 到默认路线localhost:8000/fr/
- 在
配置中提供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已经更改,我们很难将其作为罪魁祸首。