ExtJS Sencha CMD 打包异常报错分析处理 - 2

今天使用 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"));

今天遇到的二个故障就都解决掉了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MetaEnchanter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值