【问题标题】:Angular Dart with Polymer and Service-Worker incompatibiltyAngular Dart 与 Polymer 和 Service-Worker 不兼容
【发布时间】:2017-04-07 09:49:13
【问题描述】:

我目前正在尝试构建一个与 Google Progressive Web Apps 规范兼容的网络应用程序。为此,我将 Angular 与基于 Dart 和 Polymer 的 Web 组件一起使用,而不是 Angular 组件。到目前为止,一切都按预期工作。为了使应用能够使用 Service-Worker API 离线,我使用了以下 dart 库:https://github.com/isoos/service_worker

使用 Polymer 或 Service-Worker 都可以正常工作,但结合使用booth 会在应用启动时退出并出现错误。

这是我的 AppComponent 启动例程:

// ... other imports
import 'package:service_worker/window.dart' as sw; // <-- import alone causes the error

Future main() async {
  await initPolymer();  // <-- causes the error in combination with the import above
  bootstrap(AppComponent);

  if (sw.isNotSupported) {
    print('ServiceWorkers are not supported.');
    return;
  }
  //... initializing service worker
}

即使我没有初始化Service-Worker也会出现错误,导入Service-Worker模块就足以导致错误。

构建应用程序没有任何错误。

我是 Dart 以及 Polymer 和 Angular 生态系统的新手,我收到的错误消息对我没有多大帮助:

Uncaught Error: NoSuchMethodError: method not found: js_helper.dart:1742 'h' (J.Q(...).h is not a function)
    at Object.J.H (http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:9747:15)
    at http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:10559:1584
    at Isolate.e.(anonymous function) (http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:10608:15)
    at Object.yK (http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:9291:22)
    at http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:9282:10
    at yM.a (http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:2612:72)
    at yM.dart.yM.$2 (http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:2828:24)
    at y9.dart.y9.$1 (http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:2824:31)
    at xM.bi (http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:3767:40)
    at xk.$0 (http://127.0.0.1:8080/index.bootstrap.initialize.dart.js:3167:16)

您能否给我一个提示,什么可能导致错误以及如何解决它?我非常想使用 Polymer 组件而不是普通的 Angular 组件,但我需要 Service-Worker 来支持离线缓存。

【问题讨论】:

    标签: angularjs polymer dart service-worker progressive-web-apps


    【解决方案1】:

    这看起来是由dart:js(旧样式,由原始聚合物包使用)和package:js(新样式,由所有新包使用,包括package:service_worker)之间的不兼容引起的。

    您可能想看看polymerize 项目,它通过新型互操作引入了 Polymer。这样你就没有冲突了。

    【讨论】:

      猜你喜欢
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      相关资源
      最近更新 更多