我目前正在尝试构建与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来进行离线缓存支持。
答案 0 :(得分:3)
这似乎是dart:js
(原始聚合物包使用的旧样式)与package:js
(所有新包使用的新样式,包括{{1}之间不兼容所导致的问题}})。
您可能想看一下polymerize项目,它通过新式互操作带来Polymer。那你就没有冲突了。