lihuifang
lihuifang
  • 发布:2024-04-03 09:26
  • 更新:2024-04-03 11:43
  • 阅读:162

【报Bug】H5打包的时候vite.config.js里的插件中closeBundle中的代码无法正常运行

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

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

HBuilderX类型: 正式

HBuilderX版本号: 4.08

手机系统: iOS

手机系统版本号: iOS 17

手机厂商: 苹果

手机机型: 77

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:

const deleteIconPlugin = () => {
return {
name: 'deleteIcon',
apply: 'build',
closeBundle() {
console.log(1);
setTimeout(function() {
console.log(2); // 此行未正常打印
}, 200);
const iconPath = path.resolve(__dirname, './unpackage/dist/build/web/static/icon/')
if (fs.existsSync(iconPath)) {
fs.removeSync(iconPath)
}
}
}
}

预期结果:

能正常运行

实际结果:

不能正常运行

bug描述:

H5打包的时候vite.config.js里的closeBundle钩子函数中的回调代码无法正常运行,
如下面代码 console.log(1)正常输出,console.log(2)没正常输出,在以前3.xx版本中都是可以正常输出的。是不是编辑器修改了啥?不支持异步的内容回调了?
如果新版本不支持异步的代码这将导致好多回调型的功能都没法写。。。
但我试了一下generateBundle函数,发现又是正常支持异步函数的。所以我懵了⊙▃⊙。。。

const deleteIconPlugin = () => {
return {
name: 'deleteIcon',
apply: 'build',
closeBundle() {
console.log(1);
setTimeout(function() {
console.log(2); // 此行未正常打印
}, 200);
const iconPath = path.resolve(__dirname, './unpackage/dist/build/web/static/icon/')
if (fs.existsSync(iconPath)) {
fs.removeSync(iconPath)
}
}
}
}

2024-04-03 09:26 负责人:无 分享
已邀请:
lihuifang

lihuifang (作者)

我后来发现只要我在钩子函数的末尾主动加个耗时任务,前面的异步任务又能进行下去了,比如在closeBundle()函数末尾添加如下代码:
for (var i = 0; i < 20000; i++) {
console.log(i);
}

我感觉就是HB内置的终端在打包完强行关掉了所有进程,导致了有些异步的任务根本没法正确完成

要回复问题请先登录注册