Запуск Spartacus Storefront в IE11 возвращает ошибку списка классов, несмотря на то, что нам требуются поля для заполнения

#spartacus-storefront

Вопрос:

Мы оцениваем Spartacus для нашей новой платформы сайта электронной коммерции B2B. Одним из основных требований является поддержка IE11 (ОБЯЗАТЕЛЬНО). Согласно документации Spartacus, сам Angular поддерживает IE11 с полифиллами, поэтому Spartacus должен работать в IE11 без стилей Spartacus (переменный css).

Мы попытались заполнить OOTB Spartacus (3.1 и 3.2 в режиме SSR и без SSR), и он загружает страницы и функции, но мы получаем ошибку списка классов в веб-консоли. Даже несмотря на то, что нам потребовались полифиллы. Ниже приведены заполнители, которые мы установили и настроили :

  • classlist.js
  • web-animation.js
  • ядро-js
  • а также целевой компиляцией является es5.

IE11 -Ошибка списка классов Spartacus 3.1 и 3.2

Любая помощь в устранении этой ошибки списка классов была бы полезна.

Итак, кто-нибудь заставил Spartacus работать в IE11 с вашими собственными таблицами стилей ?

Комментарии:

1. Я изложил проблему и вопрос, как я уже говорил в этом посте. Мы получаем сообщение об ошибке, чтобы заставить Spartacus работать в IE11, и был опубликован соответствующий снимок экрана конфигурации и ошибок pollyfill. Пожалуйста, дайте мне знать, если мне нужно быть более ясным, чем это, и нужна какая-либо другая информация. А также, в общем, спрашиваю форум Спартака, чтобы кто-нибудь заставил спартака работать в IE11. не знаю, что в этом плохого.

Ответ №1:

Похоже, что основная проблема заключается undefined в том, что ожидается, что будет определена некоторая ссылка на элемент DOM. Поэтому доступ к его свойству classList невозможен.

Как отлаживать

Наиболее оптимальным способом отладки будет использование репозитория Spartacus: пожалуйста, клонируйте репозиторий spartacus, установите deps (yarn) и запустите yarn start . Затем откройте его в IE11 и, пожалуйста, отладьте.

Класс, который выглядит как кандидат на то, чтобы вызвать ошибку, может быть PageTemplateDirective .

Я искал кодовую базу Spartacus, где classList есть доступ к собственности. В большинстве случаев элементом DOM является body — который всегда должен быть определен. Это относится не только к PageTemplateDirective и ProductIntroComponent (но последнее не отображается на домашней странице, поэтому я думаю, что это не имеет значения).

Пожалуйста , установите отладчик в методах PageTemplateDirective , чтобы проверить, когда ссылка на элемент DOM undefined , и, пожалуйста, изучите ее подробнее.

введите описание изображения здесь

Продолжающееся устаревание ie11 компанией Angular

Пожалуйста, обратите внимание, что Angular планирует отказаться от поддержки IE11 в ng12 (в ближайшее время) и отказаться от нее в ng13 (конец 2021 года). См.: https://github.com/angular/angular/issues/41840