7***@qq.com
7***@qq.com
  • 发布:2022-07-01 14:22
  • 更新:2022-07-05 09:34
  • 阅读:668

【报Bug】编译到微信小程序时 分包中export的编译不正常。

分类:HBuilderX

产品分类: HbuilderX

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 21H2

HBuilderX版本号: 3.4.15

示例代码:

export const tabbar_list = []

操作步骤:

图片很清除了

预期结果:

图片很清除了

实际结果:

图片很清除了

bug描述:

如图四张图说明一切。

但是这个问题是今天才出现的,因为我同时更新了微信开发者工具和HBuilderX版,但是在看我来,编译的确不正常,当我手动在微信开发者工具中把修改export default tabbar_list 修改为exports.tabbar_list= tabbar_list 就正常了 。

export 和export default 都会出现这个问题。

(如果在编译中开启 js转es5,此时一切正常)

2022-07-01 14:22 负责人:无 分享
已邀请:
7***@qq.com

7***@qq.com (作者) - 前端菜鸟puls

更新,版本库到最新又正常了 。暂不清楚是哪边的问题。

7***@qq.com

7***@qq.com (作者) - 前端菜鸟puls

经测试,还原为 export const tabbar_list = [],又正常了,

并且自动编译成了exports.tabbar_list = tabbar_list;
exports.tabbar_list = tabbar_list;

具体产生原因尚不清楚(因为出现过程实在我对微信开发者工具和hb更新后运行代码预览时出现的问题。再次之前并没有修改过相应的代码。)

7***@qq.com

7***@qq.com (作者) - 前端菜鸟puls

更新记录:
测试过程。

1、新建index.js文件(分包)

const arr = []  
export default arr

2、引用

    import test from '@/pages-components/static/index.js'  
    console.log(`------->日志输出test:`, test);

期望:正常

实测正常。

然后继续步骤:

3、关闭开发者工具
4、重新运行HB,
5、再次查看

------->日志输出test: undefined

期望:正常
实测:异常

继续步骤:
6、打开引用index.js的vue文件,随意更改 再保存(使微信开发者工具重新编译)
7、再次查看
期望:异常
实测:正常
微信开发者工具相对应得文件内容变为

const arr = [];
exports.arr = arr;

最终结论,
HB在某些特殊情况下(第一次编译/开启组件按需加载)等。会导致export default xx 不能正确及时编译为exports.xx

7***@qq.com

7***@qq.com (作者) - 前端菜鸟puls

官方人员再复现调试的时候请注意。
相应的环境如下
HBuilderX 3.4.18
vue3
微信开发者工具 Stable 1.06.2206090
微信基础调试库 2.24.7

1、使用export let arr = [] 或者 export default arr 在不关闭微信开发者工具的情况下新增js并且引用时,都能正常编译,并且没有任何问题。

2、在关闭微信开发者工具后,重新运行代码,此时,都会异常(没有正确编译)。

3、在3的基础上,export let arr = [] 或者 export default arr 虽然没有正常编译,但是不影响使用,并且能够上传和预览(在昨天是本地正常,但不能正常上传预览的,但是在今天微信开发者工具选择最新的调试库后就可以正常上传和预览了)。

4、打开你引用的文件,随意修改 再次保存。此时,微信开发者工具正常编译。

5、经再次测试,上述第4点,并不一定需要打开引用的vue文件修改保存。而是随意打开项目任意vue文件修改保存后,开发者工具都会重新编译,此时一切正常。

6、在开启 ES6转ES5时,重新运行(首次运行)是可以直接上传的,但是文件没有正常编译。不开启ES6转ES5时,重新运行(首次运行)不能直接上传会报错。在修改任意文件后,都会正常编译。此时一切正常。

最终结论和目前解决办法就是 如果你分包引用了分包内的某个js,并且没有开启 ES6转ES5,你在第一次运行后你需要修改任意vue文件(达到再次编译),此时开发者工具的代码才是你想要的代码,也才是正常的代码。否则你可能遇到上传失败,但是本地运行一切正常的现象。

7***@qq.com

7***@qq.com (作者) - 前端菜鸟puls

搜了下好像这个问题老早就有了,官方也不给个回复。。又发现一个bug,都懒得报了,uniapp总是出些奇葩问题。

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