Sencha Cmd,C2001闭包编译器错误:扩展本机类:Array

时间:2018-05-25 14:11:06

标签: javascript extjs sencha-cmd

运行Sencha Cmd v6.5.3.6时,出现以下错误消息:

  

[ERR] C2001:Closure Compiler Error(此代码无法从ES6转换。扩展本机类:Array) - compression-input:111263

错误是由以下代码引起的:

  

class Chains扩展Array {
  }

类声明中的方法仍会出现错误。

有没有办法让Sencha Cmd编译这段代码?

更新: 要解决此问题,我将代码更改为:

  

功能链(){};
  Chains.prototype = new Array;
  Chains.prototype.anyMethod = function(){}

2 个答案:

答案 0 :(得分:1)

我不认为ExtJS目前支持这种语法。目前,您可能必须使用他们的语法:

Ext.define('Chains', {
    extend: 'Array'
});

然后在您的代码中,您可以这样称呼它:

var chns = Ext.create('Chains');
chns.push('a');
console.log(chns);

答案 1 :(得分:1)

您使用的是ES6 that cannot be transpiled into pre-ES6 code的功能。

默认情况下,Sencha Cmd会将您的代码转换为ES6之前的代码,因为IE11支持尚未被删除。

您可以按照in the official docs描述的Sencha Cmd 6.5.0开始禁用代码转换:

  

在某些情况下,您不会需要所有这些转化。也许您的目标是Electron,或者您只支持具有所有这些功能的现代浏览器。您可以禁用转换器,并仍然使用Sencha Cmd代码压缩器对您的本机ES6代码。只需对app.json文件进行调整,然后告别转发器及其polyfill:

"output": {
    "js": {
        "version": "ES6"
    }
}