javascript – 无法使用聚合物元素 – “无法在’文档’上执行’registerElement’”

前端之家收集整理的这篇文章主要介绍了javascript – 无法使用聚合物元素 – “无法在’文档’上执行’registerElement’”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个元素,为了简洁起见,我将在这里简化,我想做一个端到端的过程,看看它是否有效.

这是它的bower.json文件

{
  "name": "test-element","version": "0.0.1","authors": [
    "my name"
  ],"description": "A description","license": "MIT","ignore": [
    "**/.*","node_modules","bower_components","test","tests"
  ],"dependencies": {
    "polymer": "~0.9.0"
  }
}

我将它上传到我的测试仓库,并在WebStorm中打开了一个新项目.

我做了bower安装test-element并且它也下载了聚合物目录,这是我想要的依赖项,尽管那里没有js文件. (不应该有一个要引用的polymer.js文件吗?)

现在,我加载的索引文件在正文中有这个:

<script src="bower_components/webcomponentsjs/webcomponents.js"></script>
    <link rel="import" href="bower_components/test-element/test-element.html">

    <test-element
        elements="[...array contents...]">
    </test-element>

我的test-element.html:

<link rel="import" href="../../../polymer/polymer.html">


<polymer-element name="test-element" ....> 
    <template>
          ... doesn't really matter ...
    </template>
    <script>
        Polymer({
            created: function () { .. }
        });
    </script>
</polymer-element>

但是当我加载页面时,我在控制台中看到了这个:

Uncaught SyntaxError: Failed to execute ‘registerElement’ on
‘Document’: Registration Failed for type ‘undefined’. The type name is
invalid.

我试过很多帖子,我看不到我在这里缺少什么.我在导入元素的HTML文件之前加载webcomponents.js.

那2个问题:

>为什么会出现这种错误?我做错了什么?我错过了polymer.js吗?如果是这样,为什么不下载作为依赖的一部分?
>如果我有很多元素,我是否需要在每个元素中包含polymer.html,或者我可以在index.html文件中加载一次?

解决方法

>您将聚合物0.5与0.9混合. Polymer 0.9中发生了很多变化.例如,聚合物元件已被dom模块取代. Migration Guide.

之前:

<polymer-element name="register-me">
  <template>
    <div>Hello from my local DOM</div>
  </template>
  <script>
    Polymer();
  </script>
</polymer-element>

后:

<dom-module id="register-me">
  <template>
    <div>Hello from my local DOM</div>
  </template>
</dom-module>

<script>
  Polymer({is: "register-me"});
</script>

>您看到此错误

Uncaught SyntaxError: Failed to execute ‘registerElement’ on
‘Document’: Registration Failed for type ‘undefined’. The type name is
invalid.

因为您使用的聚合物核心元素与Polymer 0.5和Polymer 0.9兼容.与聚合物0.9一起,聚合物元素也得到升级.按照此post安装新元素.

注意:核心元素在聚合物0.9中报废并用铁元素代替.

>要正确安装Polymer 0.9,请在bower.json中包含这些行

“依赖”:{
“聚合物”:“聚合物/聚合物#^ 0.9.0”
}

并使用此终端命令$bower install

猜你在找的JavaScript相关文章