-
Creator 版本: 2.4.x
-
目标平台:小米快游戏
-
重现方式:小米快游戏调试器,勾选调试,运行Demo 必现
-
首个报错:
提示:找不到文件TsFile.js -
之前哪个版本是正常的:一直不正常
-
手机型号:小米手机
-
重现概率:100%
问题代码:
2.4.x, js引用ts的模块,其中ts中模块声明如下,必须使用export default

js引用如下:

就这么简单,在小米快游戏上就会报错。而同样的代码在oppo,vivo,微信,抖音小游戏都是正常的。
报错如下面的图片所示,找不到资源,TsFile.js这个文件找不到。
经过我对打包后代码(勾选调试模式打包:assets/main/index.js)的跟踪,发现报错出现在下图标记的代码。

这段require代码提示找不到文件,当我把代码改成下面这样,然后执行小米平台的命令npm run build打包调试,就正常了。但是实际上_interopRequireDefault并没有做任何处理。
![]()
所以接下来发生的就诡异了,真正奇葩的事情是,我仅仅在require旁边加上括号,又会报同样的错误,提示找不到Tsfile.js。如下图示。仅仅在require()函数左右加上圆括号,继续报同样的错误。

事实证明,报错跟_interopRequireDefault这个函数没有任何关系,也不是它的错。
所以问题来了,为什么加了圆括号的require,就报错了??我的经验来说的话,应该是小米平台有些特殊处理或特殊原因,但是因为能力有限,无法深究,坐等高手指教,谢谢!
PS:如果没有大佬帮我解决,我当前预想的解决方案,打包后,自动替换build目录下index.js中的代码:_interopRequireXXX(require(xx)),替换为require(xx)。这种方式只能解决勾选了调试的情况。。我去。。
下面是我做的Demo,很简单。用的是2.4.7(2.4.11实测一样的问题。)
TestRequire.zip (246.3 KB)
重要补充:上面说的都是构建页面,勾选调试模式出现的问题。当release模式时,是正常的。

