没有'new'就不能调用类构造函数PolymerElement

时间:2017-04-20 13:10:36

标签: javascript ecmascript-6 polymer

昨天我的应用程序工作正常,但是当我现在polymer serve -o打开应用程序并在控制台中打印此错误时。

Class constructor PolymerElement cannot be invoked without 'new'

5 个答案:

答案 0 :(得分:7)

  1. 清除浏览器缓存中的缓存文件和图片。
  2. 如果您已加载 custom-elements-es5-adapter.js ,请将其删除。
  3. 然后使用 $ polymer serve --compile never
  4. 根据this post,这个问题是因为 $ polymer serve 会自动将代码编译为es5。 - compile never 标志会阻止 $ polymer serve 执行此操作。

答案 1 :(得分:2)

在将我的Polymer App移至v.2之后的另一天,我遇到了类似的错误 This帮助了我:

  

要解决此问题,请先加载custom-elements-es5-adapter.js   声明新的自定义元素。

     

由于大多数项目需要   它支持各种不必支持ES6的浏览器   将项目编译到ES5可能有意义。但是,ES5风格   自定义元素类不适用于本机自定义元素   因为ES5风格的类无法正常扩展ES6类,比如   HTML元素。

答案 2 :(得分:0)

我将我的Polymer App构建为es5-bundled,并使用WebView将其提供给Android App。 这个问题经常出现。

答案 3 :(得分:0)

polymer.json中,将custom-elements-es5-adapter添加到excludes数组,以阻止其编译为ES5。

  "builds": [
    {
      "bundle": {
        "stripComments": true,
        "inlineCss": true,
        "sourcemaps": false,
        "excludes": [
          "bower_components/webcomponentsjs/webcomponents-loader.js",
          "bower_components/webcomponentsjs/custom-elements-es5-adapter.js"
        ]
      },
      "js": {
        "compile": true,
        "minify": true
      },
      "css": {
        "minify": true
      },
      "html": {
        "minify": true
      },
      "addServiceWorker": false

答案 4 :(得分:0)

发生此问题的原因是“自定义元素v1”要求您的代码使用ES6语法。因此,请确保不要将其移植到任何较低的东西,例如ES5。

对于像我这样使用Parcel捆绑器遇到此问题的任何人;默认情况下,即使您使用Typescript,并且已将tsconfig目标设置为ES6,它也会将您的代码编译为ES5。

解决方案是告诉Parcel您要定位的浏览器,以便知道它不必转换为ES5。一种方法是在package.json中添加“浏览器列表”字段。

我通过此video发现了这一点。有关更多信息,我建议您去观看。