聚合物,grunt-vulcanize:prototype.registerCallback不是一个函数

时间:2015-06-16 14:35:29

标签: gruntjs polymer polymer-1.0

我正在尝试使用Polymer创建一个非常简单的HTML页面,其中包含一个包含我需要的所有组件的HTML文件:

<link rel="import" href="bower_components/iron-ajax/iron-ajax.html">
<link rel="import" href="components/my-element.html">

my-element.html看起来像这样:

<link rel="import" href="../bower_components/polymer/polymer.html">
<polymer-element name="my-element">
  <template>
    // Some HTML
  </template>
  <script>
    Polymer({
        is: 'my-element',
        properties:{
            // properties
        }
    });
  </script>
</polymer-element>

当我按原样运行时,一切正常。

当我尝试硫化components.html文件,然后打开与硫化版本相同的页面时,我在控制台中收到以下错误

“Uncaught TypeError:prototype.registerCallback不是函数”

我注意到硫化过程转为

    Polymer({
        is: 'my-element',
        properties:{
            // properties
        }
    });

进入

    Polymer('my-element', {
        is: 'my-element',
        properties:{
            // properties
        }
    });

这似乎是造成错误的原因,因为window.Polymer只需要一个Object作为参数。

我正在使用grunt-vulcanize来进行实际的硫化,我的配置如下所示:

vulcanize: {
    default: {
        options: {
            excludes: {
              imports: [
                'polymer.html'
              ]
            },
            'strip-excludes': false,
            inline: true,
            strip: true
        },
        files: {
            'build.html': 'components.html'
        },
    },
}

有没有办法阻止这个?

我正在使用聚合物1.0,并且使用咕噜硫化0.6.4

2 个答案:

答案 0 :(得分:0)

知道了:我使用<polymer-element>代替<dom-module><dom-module>对于Polymer 1.0来说是正确的。

本指南非常有用,并且花了我几天的时间才找到,如果只是为了让你知道什么适用于0.5以及什么适用于1.0:

https://www.polymer-project.org/1.0/docs/migration.html

答案 1 :(得分:0)

grunt-vulcanize与硫化1.8.1不兼容,因为github上的最新更新是在2月9日版本0.6.4。它是Polymer 0.8 +的过期插件。

临时适用于硫化 - 硫化^ 1.8.1和聚合物1.0的咕噜硫化。 https://github.com/kgadzinowski/grunt-vulcanize/

只需更改package.json:
&#34; grunt-vulcanize&#34;:&#34; kgadzinowski / grunt-vulcanize&#34;

它会正常工作