昨天我的应用程序工作正常,但是当我现在polymer serve -o
打开应用程序并在控制台中打印此错误时。
Class constructor PolymerElement cannot be invoked without 'new'
答案 0 :(得分:7)
根据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发现了这一点。有关更多信息,我建议您去观看。