今天使用 sencha app build -testing 进行编译,然后运行的时候,出现错误
app.js?_dc=1666874035180:81578
Uncaught TypeError: t[1] is not a function
at app.js?_dc=1666874035180:81578:16
at app.js?_dc=1666874035180:81579:5
at app.js?_dc=1666874035180:79643:213
at app.js?_dc=1666874035180:79644:2
最后找到原因app.json 配置中引入了一个,jsencrypt.min.js文件,使用打包到app.js中, “includeInBundle”: true,导致,
{
"path": "resources/js/jsencrypt.min.js",
"includeInBundle": true
},
改后:
{
"path": "resources/js/jsencrypt.min.js",
"includeInBundle": false
},
但是使用sencha app build --production,进行最终编译的时候,还是会报错
jsencrypt.min.js?_dc=20221027204010:1
Uncaught TypeError: c[1] is not a function
at jsencrypt.min.js?_dc=20221027204010:1:107090
at jsencrypt.min.js?_dc=20221027204010:1:107112
at jsencrypt.min.js?_dc=20221027204010:1:51671
at jsencrypt.min.js?_dc=20221027204010:1:51675
源码如下:
return c[1](0, b, a),
b["default"]
}
)()
});
最终发现,cmd 在进行编译的时候,会将这个JS文件内容进行处理,可能是做一次压缩,或是混淆之类的处理,导致文件内容被破坏掉了
{
"path": "resources/js/jsencrypt.min.js",
"includeInBundle": false,
"remote": true
},
最终在配置中加上"remote": true,文件就不会被进行压缩处理, 保持原样,问题也得以解决,主要应该是因为这个jsencrypt.min.js不能再进行YUI压缩了,而cmd 会在打包的时候进行压缩处理,实际呢,由本来的55KB左右,反被弄成了100多Kb
另外在打包编译过程中遇到一个报错:
[ERR] C2001: Closure Compiler Error (Cannot convert ECMASCRIPT_2018 feature “RegExp Lookbehind” to targeted output language.) – compression-input:204146:39
关于正则方面的代码可能写法比较新,sencha cmd还不支持,暂时就直接屏蔽了,改成ES6以下能兼容的方式比较好
let subject = 'comparision="测试数据"';
//问题代码:
let comparison = subject.match(/(?<=comparision=").*?(?=")/mg);
//修正代码:
let comparison = subject.match(new RegExp('(?<=comparision=").*?(?=")', "gm"));
今天遇到的二个故障就都解决掉了.