角聚合物与聚合物和服务工作者不兼容

时间:2017-04-07 09:49:14

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

我目前正在尝试构建与Google Progressive Web Apps规范兼容的网络应用。为此,我使用Angular with Dart和基于Polymer的Web组件而不是Angular组件。到目前为止一切都按预期工作。要使用Service-Worker API使应用程序脱机,请使用以下dart lib: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来进行离线缓存支持。

1 个答案:

答案 0 :(得分:3)

这似乎是dart:js(原始聚合物包使用的旧样式)与package:js(所有新包使用的新样式,包括{{1}之间不兼容所导致的问题}})。

您可能想看一下polymerize项目,它通过新式互操作带来Polymer。那你就没有冲突了。