升级到 2.1 后从 basesites 请求中获取上下文后未及时设置

Context not set in time after fetching it from the basesites request after Upgrading to 2.1

我们设置了 Spartacus 项目以从 basesites 请求中获取上下文。可以在此处看到示例响应:

{
   "baseSites" : [ {
      "defaultLanguage" : {
         "isocode" : "sl"
      },
      "geoRecommended" : false,
      "showTeaser" : true,
      "stores" : [ {
         "currencies" : [ {
            "isocode" : "EUR"
         } ],
         "defaultCurrency" : {
            "isocode" : "EUR"
         },
         "defaultLanguage" : {
            "isocode" : "sl"
         },
         "languages" : [ {
            "isocode" : "sl"
         } ],
      } ],
      "uid" : "ung-site-si",
      "urlEncodingAttributes" : [ "languageCountry" ],
      "urlPatterns" : [ "(?i)^https?://localhost(:[\d]+)?/rest/.*$", "(?i)^https?://[^/]+/(sl-SI)/?.*$" ]
   }, ...
]

我们目前建立了两个基地。 urlPatterns 用于查找正确的 baseSite。然后在我们自定义的 occ-loaded-config-converter 中设置上下文(baseSite、语言、货币)。所以我们没有使用任何静态上下文或从 URL 中获取它,而是从 basesites 请求的响应中获取上下文。

站点上下文拦截器然后订阅例如this.languageService.getActive() 然后为后端请求设置正确的上下文(语言、货币):

/rest/v2/ung-site-rs/cms/pages?fields=DEFAULT&pageType=ContentPage&pageLabelOrId=/shoppster-akcija&lang=sr&curr=RSD

在 Spartacus 升级到 2.0 之前,这工作正常。在从 basesites 请求设置上下文之后,站点上下文拦截器中的订阅被触发,正确的上下文随后续后端请求一起发送。现在升级到 2.1 后,上下文不再按时设置。因此,前几个后端请求使用错误的上下文(默认 USD、en)发送,然后在某个时间点触发订阅并设置正确的上下文。

这可能与此更改有关: https://sap.github.io/spartacus-docs/technical-changes-version-2/#context-change-action-not-dispatched-on-the-initial-setting-of-the-value

现在不能再使用 basesites 请求来设置上下文了吗?

中所述:升级到最新补丁版本 2.1.4 已解决问题。