Постоянная загрузка ... в предварительном просмотре Smartedit - PullRequest
0 голосов
/ 07 мая 2020

У меня проблемы с предварительным просмотром страниц в SmartEdit. Иногда загрузка ... застревает там навсегда, и эта проблема, по-видимому, связана со временем загрузки DOM.

Если у меня запущена консоль devtools, скорее всего, страница загрузится 1/10 раз, в Mozilla она работает 10/10 без запущенной консоли браузера. В общем, настройка кажется прекрасной, все работает, как задумано, за исключением этой раздражающей проблемы с постоянной загрузкой.

На вкладке сети происходит сбой cx-preview, появляется ошибка 200, и загрузка остается, хотя компоненты на странице видны за наложением Loading

Также перед ошибкой 200 из вызова cx-preview есть еще одна красная с текстом (отменено) в конце.

enter image description here

enter image description here

Обновление: похоже, здесь есть проблема, когда cx-preview устанавливается в сериализаторе. Если я удалю условие state.url.length, загрузка будет постоянной.

import { RouterStateSnapshot } from '@angular/router';
import {
  ActivatedRouterStateSnapshot,
  CmsActivatedRouteSnapshot,
  PageContext,
  PageType
} from '@spartacus/core';

export class AokCuRouterStateSerializer {
  serialize(routerState: RouterStateSnapshot): ActivatedRouterStateSnapshot {
    const { url } = routerState;
    const { queryParams } = routerState.root;

    let state: CmsActivatedRouteSnapshot = routerState.root as CmsActivatedRouteSnapshot;
    let cmsRequired = false;
    let context: PageContext;

    while (state.firstChild) {
      state = state.firstChild as CmsActivatedRouteSnapshot;

      if (state.data && state.data.cxCmsRouteContext) {
        context = state.data.cxCmsRouteContext;
      }

      if (
        !cmsRequired &&
        (context ||
          (state.routeConfig &&
            state.routeConfig.canActivate &&
            state.routeConfig.canActivate.find(
              x => x && x.guardName === 'CmsPageGuard'
            )))
      ) {
        cmsRequired = true;
      }
    }
    const { params } = state;

    if (state.url.length > 0 && state.url[0].path === 'cx-preview') {
      context = {
        id: 'smartedit-preview',
        type: PageType.CONTENT_PAGE
      };
    } else {
      if (params['productCode']) {
        context = { id: params['productCode'], type: PageType.PRODUCT_PAGE };
      } else if (params['orderCode']) {
        context = {
          id: 'order-' + params['orderCode'],
          type: PageType.CONTENT_PAGE
        };
      } else if (params['categoryCode']) {
        context = { id: params['categoryCode'], type: PageType.CATEGORY_PAGE };
      } else if (params['brandCode']) {
        context = { id: params['brandCode'], type: PageType.CATEGORY_PAGE };
      } else if (state.data.pageLabel !== undefined) {
        context = { id: state.data.pageLabel, type: PageType.CONTENT_PAGE };
      } else if (!context) {
        if (state.url.length > 0) {
          const pageLabel =
            '/' + state.url.map(urlSegment => urlSegment.path).join('/');
          context = {
            id: pageLabel,
            type: PageType.CONTENT_PAGE
          };
        } else {
          context = {
            id: 'homepage',
            type: PageType.CONTENT_PAGE
          };
        }
      }
    }

    return { url, queryParams, params, context, cmsRequired };
  }
}

1 Ответ

0 голосов
/ 07 мая 2020

Очевидно, это проблема, связанная как со SmartEdit, так и со Spartacus, и она будет исправлена ​​где-то в будущем: https://github.com/SAP/spartacus/issues/2358 - проверьте последние обновления

...