打破异常:输入' HtmlElement'不是类型的子类型

时间:2014-12-16 14:57:32

标签: dart dart-polymer dart-html

我已经看到很多其他类似的错误,但我不确定它们是否相关。 我基本上试图动态创建聚合物组件并将它们添加到现有页面,一旦工作,我想创建自己的聚合物组件并动态地添加/删除页面。

pubspec.yaml:

name: alm
description: alm
dependencies:
  browser: any
  polymer: ">0.15.3"
  paper_elements: any
transformers:
- polymer:
    entry_points:
      - web/index.html

index.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>  
    <link rel="import" href="packages/paper_elements/paper_button.html">    
  </head>
  <body unresolved>   
    <script type="application/dart" src="index.dart"></script>    

    <paper-button raised class="colored">colored</paper-button>
    <paper-button raised disabled>disabled</paper-button>

    <div id="more-buttons"></div>

    <script src="packages/browser/dart.js"></script>
  </body>
</html>

index.dart:

import 'dart:html';
import 'package:polymer/polymer.dart';
import 'package:paper_elements/paper_input.dart';
void main(){

  initPolymer().run(() {
    Polymer.onReady.then((_) {     
      DivElement div =   querySelector("#more-buttons");
      div.appendText("text 1 2 3");
      PaperInput pinput = new PaperInput.created();
      div.append(pinput);      
    });
  });

}

我得到的例外:

  

打破例外:输入&#39; HtmlElement&#39;不是类型的子类型   &#39; PaperInput&#39; &#39;功能结果&#39;。

如果我尝试使用Element对象:

  Element y = new Element.tag('paper-input');
  div.append(y);
  

打破例外:输入&#39; HtmlElement&#39;不是类型的子类型   &#39; PaperInput&#39; &#39;功能结果&#39;。

     

例外:输入&#39; HtmlElement&#39;不是PaperInput&#39;类型的子类型。的   &#39;功能结果&#39;。 (包:paper_elements / paper_input.dart:40)

我也很好奇为什么一切都如此庞大:

enter image description here

我使用标准飞镖编辑器并点击Dartium中的运行来运行该应用程序。

更新

我已更新代码,现在收到不同的错误。 不得不更新pubspec.yaml中的聚合物版本,任何导致错误。

浏览器控制台:

Failed to load resource: the server responded with a status of 404 (Not Found)
  http://localhost:8080/packages/web_components/webcomponents.js
Failed to load resource: the server responded with a status of 404 (Not Found)
  http://localhost:8080/packages/web_components/interop_support.html
Failed to load resource: the server responded with a status of 404 (Not Found)
  http://localhost:8080/packages/custom_element_apigen/src/common.dart
An error occurred loading file: package:custom_element_apigen/src/common.dart

我现在看到的是按钮的短暂闪烁,然后是白色屏幕。

工具输出给出了以下错误:

Resolving dependencies...
Got dependencies!


--- 6:10:00 PM Starting pub serve : ______ ---
Loading source assets...
Loading polymer transformers...
Serving alm web on http://localhost:8080
[Warning from ImportInliner on alm|web/index.html]:
line 10, column 1 of package:paper_elements/src/polymer/polymer.html: Failed to inline HTML import: Could not find asset web_components|lib/interop_support.html.
null. See http://goo.gl/5HPeuP#polymer_25 for details.
<link rel="import" href="../../../../packages/web_components/interop_support.html">
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Build completed successfully

查看建议的链接:

Error while inlining an import
An error occurred while inlining an import in the polymer build. This is often the result of a broken HTML import.

我无法真正看到我的index.html可能出现的问题以及我可以在paper_elements包下看到的导入。

UPDATE2:

将聚合物的更新版本更新为&gt; 0.15.3,并且pub upgradepub cache repair现在又看到了一个不同的例外:

Exception: Uncaught Error: created called outside of custom element creation.
Stack Trace:
#0      Blink_Utils.initializeCustomElement (dart:_blink:31040)
#1      _Utils.initializeCustomElement (dart:html:41640)
#2      _initializeCustomElement (dart:html:41835)
#3      Element.Element.created (dart:html:11675)
#4      HtmlElement.HtmlElement.created (dart:html:17615)
#5      HtmlElement&DomProxyMixin.HtmlElement&DomProxyMixin.created (package:paper_elements/paper_input.dart:4:1)
#6      HtmlElement&DomProxyMixin&PolymerProxyMixin.HtmlElement&DomProxyMixin&PolymerProxyMixin.created (package:paper_elements/paper_input.dart:4:1)
#7      PaperInput.PaperInput.created (package:paper_elements/paper_input.dart:39:26)
#8      main.<anonymous closure>.<anonymous closure> (http://localhost:8080/index.dart:12:31)
#9      _RootZone.runUnary (dart:async/zone.dart:1155)
#10     _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:484)
#11     _Future._propagateToListeners (dart:async/future_impl.dart:567)
#12     _Future._completeWithValue (dart:async/future_impl.dart:358)
#13     _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:412)
#14     _asyncRunCallbackLoop (dart:async/schedule_microtask.dart:41)
#15     _asyncRunCallback (dart:async/schedule_microtask.dart:48)
#16     _handleMutation (dart:html:41819)

似乎可以正常使用纸质按钮,按钮实际显示:

  PaperButton y = new PaperButton();
  y.text = "KOTS";
  y.raised = true;
  div.append(y);

也许纸质元素中的错误会在需要时调查并记录错误。

1 个答案:

答案 0 :(得分:1)

变压器配置错过了entry_page设置,聚合物应用的自定义主方法不完整(参见https://stackoverflow.com/a/20982658/217408
对不起,简短的回答,我在手机上。