【很紧急】请各位官方大大看看,uni-app 鸿蒙热更新wgt提示{errMsg: "Directory not empty"}

【很紧急】请各位官方大大看看,uni-app 鸿蒙热更新wgt提示{errMsg: “Directory not empty”}

代码

uni.downloadFile({  
    url: app?.data.url,  
    success: function (res) {  
        console.log('下载成功',res)  
        if (res.statusCode == 200) {  
            plus.runtime.install(res.tempFilePath, {  
                force: true  
            }, function () {  
                console.log('安装成功')  
                uni.$tm.u.toast('更新完毕,即将重启');  
                setTimeout(() => {  
                    plus.runtime.restart();  
                }, 2000)  
            }, function (e) {  
                console.log('安装失败',e)  
                uni.$tm.u.toast(e.message);  
            });  
        }  
    },  
    fail: function (e) {  
        console.log('下载失败',e)  
        uni.hideLoading();  
        uni.$tm.u.toast(e.errMsg);  
    }  
})


更多关于【很紧急】请各位官方大大看看,uni-app 鸿蒙热更新wgt提示{errMsg: "Directory not empty"}的实战教程也可以访问 https://www.itying.com/category-93-b0.html

29 回复

替换至 /Applications/HBuilderX-Dev.app/Contents/HBuilderX/plugins/launcher-harmony/base/project.zip(解压)/libs/UniAppRuntime.har 然后重新运行试试看

更多关于【很紧急】请各位官方大大看看,uni-app 鸿蒙热更新wgt提示{errMsg: "Directory not empty"}的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我明天试试,晚上没有鸿蒙手机

安装失败返回:安装失败 {errMsg: undefined}

回复 dLucky: 我再看看,一会儿给你个包

回复 dLucky: 我替换了 har 包,你再试试看

回复 DCloud_UNI_LXH: 可以了,谢谢,忘记回复你了

回复 dLucky: 怎么解决的?我二次热更新就报这个错,是否要清除目录?

回复 3***@qq.com: 你是在development下测试的热更吗? 也就是 hbuilder里运行到鸿蒙

我这边没有作用呢, hbuilder里运行到鸿蒙, 第一次更新都不会成功, 打个只有云真机能装的app包,用云真机测试production版,第一次更新能成功, 更新后每次重启都会白屏2分钟左右才能进页面.

回复 剪不断理还乱: 每次白屏两分钟应该也是bug吧 用正式版的hbuilder 改了配置 app运行编译就报错 i is not iterable

回复 3***@qq.com: release版本的好多都还不支持, 用 alpha 吧

回复 剪不断理还乱: 我用最新的alpha 就出现安装不上的bug 一直安装的bug 你说的那种方式 上线后的production 会出现白屏的情况吗

回复 3***@qq.com: 是不是这个只是影响真机测试 正式版的热更新没有影响?

回复 3***@qq.com: production 我只试了第一次热更是成功的, 就是更新成功后每次打开都白屏一会儿, 没测试能不能第二次热更

回复 3***@qq.com: 里一个贴有新方案 https://ask.dcloud.net.cn/question/205554 可以试一下

回复 剪不断理还乱:好的谢谢

回复 3***@qq.com: 不用啊,不是发了一个包吗?这个包下载下来,然后放在鸿蒙配置文件里面,然后重新运行就行,我hbx版本是4.56哈

重启应用再安装是不是就可以了?在本次报错安装之前是否已经进行过一次安装?

是的,我用手机运行的时候就是这样,删除应用后运行第一次更新没有问题,能正常更新,等第二次就会提示

替换了之后,运行到鸿蒙报错 i is not iterable,app安装不了

app 安装不了,还是 wgt 安装不了?

回复 DCloud_UNI_LXH: 大佬,我替换之后app运行编译就报错了, i is not iterable

回复 苦撑: 那不能,用最新版的 alpha

回复 DCloud_UNI_LXH: 新版的 alpha 通过plus.runtime.getProperty 获取的版本号 还是热更新之前的版本号,导致一致循环热更新,旧版的是 拿到的热更新的包 版本号

回复 DCloud_UNI_LXH: 使用4.63版的 alpha 我发现好像热更新安装成功后 并没有安装热更新的版本,导致获取的版本号一直是上个版本的

回复 3***@qq.com: 我也一样,解决了吗?

我的Hbuilder版本是4.57

请问解决了吗

这个错误通常是由于目标目录不为空导致的。在鸿蒙系统上使用wgt热更新时,需要注意以下几点:

  1. 确保目标目录是空的,或者使用force参数强制覆盖
  2. 检查应用是否有足够的文件系统权限
  3. 确认wgt包格式正确且完整

建议尝试以下修改:

plus.runtime.install(res.tempFilePath, {
    force: true,
    replace: true  // 添加replace参数
}, function() {
    // 成功回调
}, function(e) {
    console.error('安装失败:', e);
});
回到顶部