我正在使用Dart SDK 1.5.3 |聚合物0.11.0 + 5 | Windows x64。当我使用模板'样本网络应用程序使用聚合物库(移动友好)选项创建一个创建的聚合物应用程序'然后运行应用程序按预期工作,单击按钮时计数器递增。
假设页面带有
<script type="application/dart">
export 'package:polymer/init.dart';
</script>
是index.html,试图通过从index.html
中删除以下行来重构应用程序<click-counter count="5"></click-counter>
<link rel="import" href="clickcounter.html">
导致以下错误:
Exception: NoSuchMethodError: method not found: 'whenPolymerReady'
Receiver: Instance of 'JsFunction'
Arguments: [Closure: () => dynamic] (package:polymer/src/loader.dart:115)
Breaking on exception: NoSuchMethodError: method not found: 'whenPolymerReady'
我一直在使用这种机制来创建任何聚合物应用程序,但是从未见过这样的例外,尽管我在网上看过涉及Dart的文档https://www.google.com.jm/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CBwQFjAA&url=http%3A%2F%2Fcode.google.com%2Fp%2Fdart%2Fissues%2Fdetail%3Fid%3D19161&ei=MZq8U_nlK42KyASBkYHgCw&usg=AFQjCNHOc6MD-mhzPbDOmg8Hp5NeqVufqQ&bvm=bv.70138588,d.aWw
文件表明这个问题已经解决,但它肯定存在于我目前使用的聚合物中。
答案 0 :(得分:6)
每个组件(每个包含<polymer-element>
标签的文件)都必须导入polymer.html。
确保您的clickcounter.html包含以下行:
<link rel="import" href="packages/polymer/polymer.html" />
在顶部。 (它在0.11中突破了变化)。
答案 1 :(得分:1)
我刚遇到同样的问题。 你确定你的聚合物进口是在你的javascript导入下吗?
<!-- <script src="packages/web_components/platform.js"></script>
not necessary anymore with Polymer 0.14.0 -->
<script src="packages/web_components/dart_support.js"></script>
<!-- import the click-counter -->
<link rel="import" href="clickcounter.html">
而不是:
<!-- import the click-counter -->
<link rel="import" href="clickcounter.html">
<script src="packages/web_components/platform.js"></script>
<script src="packages/web_components/dart_support.js"></script>
答案 2 :(得分:1)
我想我找到了解决方案。
clickcounter.html | imports link rel =“import”href =“packages / polymer / polymer.html |”。在入口点文件中,没有这样的导入。将组件导入入口点时,似乎满足polymer.html条件。如果没有组件,导入必须直接放在文件中。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sample app</title>
<!-- <script src="packages/web_components/platform.js"></script>
not necessary anymore with Polymer > 0.14.0 -->
<script src="packages/web_components/dart_support.js"></script>
<link rel="import" href="packages/polymer/polymer.html">
<script type="application/dart">export 'package:polymer/init.dart';</script>
<script src="packages/browser/dart.js"></script>
<link rel="stylesheet" href="epimss_material_design.css">
</head>
<body>
<h1>Epimss material design</h1>
<p>Hello world from Dart!</p>
<div id="sample_container_id">
</div>
</body>
</html>
之后一切正常。
同样的问题实际上在Dart SDK 1.6.0-dev.1.2中重新出现并且同样解决了。不过,我不能说它是不是一个错误。它只是通过添加此导入工作。我想如果使用合法组件,导入将允许从入口点文件中删除相同的导入。 Dart或Dart聚合物专家之一可能能够解释实际发生的情况。期待深入解释,因为这是我第一次观察到这个问题。
答案 3 :(得分:1)
我从聚合物模板创建的虚拟应用程序启动正常,但是一旦我将clickcounter移动到另一个目录,我就开始收到此错误(我已相应地更新了引用)。我的新文件夹结构如下:
/lib
/src
/test
clickcounter.dart
clickcounter.html
/web
polytest.html
这是修改后的行的样子:
<link rel="import" href="../lib/src/test/clickcounter.html">
答案 4 :(得分:1)
我对这些事情一无所知,但对我来说,我似乎通过移动以下代码解决了这个问题:
<!-- after the Polymer elements imports -->
<script type="application/dart">export 'package:polymer/init.dart';</script>
<script async src="packages/browser/dart.js"></script>
从<head>
的末尾到</body>
之前。
现在只有我的index.html包含这些行。最后,我还将我的自定义元素导入移到了core-elements / paper-elements导入上面。
答案 5 :(得分:0)
我不参与该开发,但似乎您的问题是应用程序中使用的API或依赖项。
答案 6 :(得分:0)
我认为您的变压器设置缺少输入页面
transformers:
- polymer:
entry_points:
- example/index.html
否则,如果存在指向根本原因
的任何其他警告或错误,请仔细查看输出答案 7 :(得分:0)
我刚才有同样的问题。看起来代码停止工作而我没有做任何更改。
问题的根本原因是,出现了新版聚合物包装。
所以你应该在 pubspec.yaml 中使用依赖。我只是明确地将Polymer的版本更改为较旧的版本。