[LayaAir3]LayaAirIDE 3.2.0版本,打包时勾选压缩js时,运行打包后的资源会报错

LayaAirIDE 3.2.0版本,和最新的 LayaAir IDE 3.1.6 打包时勾选压缩js时,运行时会报错? 不勾选压缩js,则能正常运行。
 
我一直使用的LayaAir IDE 3.1.2 选择压缩js,是能正常运行的,我又下载了最新的LayaAir IDE 3.1.6的版本,的确是也会出错的。麻烦看看是改了什么导致呢?
 
经过反复测试。发现node_modules/@noble/hashes/esm/sha3.js 里面在=后面包含/* @__PURE__ */ 这样的注释,会导致压缩js后,一些代码丢失。
 
当把这个库的sha3.js 的 /* @__PURE__ */ 全部去掉后,则能打包正常。 麻烦修复一下这个问题。
 
选择压缩js的方式打包,运行后报错信息:
 

运行报错日志.png

 
bundle-5e969.js:1 Uncaught TypeError: Tr is not a function
    at node_modules/@noble/hashes/esm/sha3.js (bundle-5e969.js:1)
    at bundle-5e969.js:1
    at node_modules/viem/_esm/utils/hash/keccak256.js (bundle-5e969.js:1)
    at bundle-5e969.js:1
    at bundle-5e969.js:1
    at bundle-5e969.js:1
node_modules/@noble/hashes/esm/sha3.js @ bundle-5e969.js:1
(匿名) @ bundle-5e969.js:1
node_modules/viem/_esm/utils/hash/keccak256.js @ bundle-5e969.js:1
(匿名) @ bundle-5e969.js:1
(匿名) @ bundle-5e969.js:1
(匿名) @ bundle-5e969.js:1
laya.core-90107.js:1 Error loading Loading.ls: 
Error: unknown type 'xmaaYG8AQ1yC07pr_JvyPA'
(匿名) @ laya.core-90107.js:1
Promise.then(异步)
load @ laya.core-90107.js:1
open @ laya.core-90107.js:1
(匿名) @ index-e1723.js:52
Promise.then(异步)
(匿名) @ index-e1723.js:48
(匿名) @ index-e1723.js:61
laya.core-90107.js:1 Uncaught (in promise) TypeError: Cannot read property '_is3D' of undefined
    at laya.core-90107.js:1
 
具体发送问题的库:

sha3库类.png

 
 
已邀请:

谷主

赞同来自:

确实是terser这个压缩工具库的bug。它在压缩@nobel/hashes/sha3时,错误的将变量gen识别为没有使用,继而删掉。比较早期的版本如3.1.2,因为使用的是esbuild内置的压缩功能而没有用terser,所以不会出问题。
 
解决方案关闭terser的自动删除未引用的变量功能(compress: { unused: false })。但目前IDE没有开放这个选项,所以只能先不勾选脚本压缩,然后自行去压缩bundle.js。后续版本IDE会加上这个开关让用户选择。

谷主

赞同来自:

把library/minifiedJsCache目录删掉再试试?

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作