我正面临使用 Angular Elements 构建小部件的奇怪行为。我创建了一个小部件来在另一个站点上弹出一个简单的反馈表单,也使用 Angular 构建,并且在开发中工作得很好,但是当我构建应用程序以进行生产时,小部件和一些延迟加载的模块之间存在不兼容。
首次加载应用程序时,小部件会从外部 URL 加载到应用程序中。然后我登录到应用程序,当一个模块被延迟加载时,它会报告以下错误
一些上下文信息:
- 小部件是使用 "@angular/elements": "^7.0.1" 构建的
- 该小部件正在使用 pollyfill,因为 Web 组件尚未被广泛采用。
- pollyfills 使用 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 的新手,任何帮助都将不胜感激。