Ошибка Angular Elements при использовании в приложении Angular6

Я столкнулся со странным поведением, используя Angular Elements для создания виджета. Я создал виджет для всплывающего окна с простой формой обратной связи на другом сайте, также строил с помощью Angular и довольно хорошо работал в разработке, но когда я создаю приложение для производства, возникают несовместимости между виджетом и некоторыми лениво загружаемыми модулями.

Виджет загружается в приложение с внешнего URL-адреса при первой загрузке приложения. Затем я вхожу в приложение, и когда модуль загружается лениво, он сообщает о следующей ошибке

Немного контекстной информации:

  • Виджет построен с использованием "@angular/elements": "^7.0.1"
  • Виджет использует полифилл, потому что веб-компоненты еще не получили широкого распространения.
  • Поллифиллы используют Zone.js
  • Приложение построено с использованием Angular 7.0.1.

Копаясь в этом нечетком сообщении об ошибке, я понял, что это было связано с Zone.js, загруженным дважды приложением и виджетом, это проблемы, связанные с этим - https://github.com/angular/angular/Issues/24466 - https://github.com/angular/angular/issues/24181 - https://github.com/angular/angular/issues/26158

Uncaught Error: Zone already loaded.
    at polyfills.d19af636bcf00eb4898f.js:1
    at polyfills.d19af636bcf00eb4898f.js:1
    at Object.0TWp (polyfills.d19af636bcf00eb4898f.js:1)
    at a (runtime.f35a2a91d37680127d85.js:1)
    at Module.hN/g (polyfills.d19af636bcf00eb4898f.js:1)
    at a (runtime.f35a2a91d37680127d85.js:1)
    at Object.1 (polyfills.d19af636bcf00eb4898f.js:1)
    at a (runtime.f35a2a91d37680127d85.js:1)
    at r (runtime.f35a2a91d37680127d85.js:1)
    at Array.t [as push] (runtime.f35a2a91d37680127d85.js:1)

Я также безуспешно пробовал это решение: - https://www.npmjs.com/package/elements-zone-strategy

Я новичок в Angular Elements, буду признателен за любую помощь.


person Alián Rigñack Quevedo    schedule 31.10.2018    source источник


Ответы (2)


Вашему угловому элементу не нужна zone.js. Вы можете следить за этим сообщением об удалении зависимости zone.js и устранении побочных эффектов. https://www.softwarearchitekt.at/post/2018/07/06/angular-elements-without-zone-js.aspx

person user3222743    schedule 15.11.2018

Это уже исправлено в zone.js, но еще не выпущено, https://github.com/angular/zone.js/pull/1121, дождитесь следующего выпуска zone.js

person jiali passion    schedule 23.11.2018