无法使用聚合物元素 - "无法在'文档'上执行'registerElement'"

Omr*_*ron 6 javascript polymer

我创建了一个元素,为了简洁起见,我将在这里简化,我想做一个端到端的过程,看看它是否有效.

这是它的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"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

我做了bower install 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>
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

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

Uncaught SyntaxError:无法在'Document'上执行'registerElement':类型'undefined'的注册失败.类型名称无效.

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

那2个问题:

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

AKh*_*AKh 9

  1. 你是将聚合物0.5与0.9混合.Polymer 0.9中发生了很多变化.例如,聚合物元件已被dom模块取代.迁移指南.

之前:

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

后:

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

<script>
  Polymer({is: "register-me"});
</script>
Run Code Online (Sandbox Code Playgroud)
  1. 您看到此错误

Uncaught SyntaxError:无法在'Document'上执行'registerElement':类型'undefined'的注册失败.类型名称无效.

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

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

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

    "dependencies": { "polymer": "Polymer/polymer#^0.9.0" }

并使用此终端命令 $ bower install