x***@163.com
x***@163.com
  • 发布:2026-04-30 17:56
  • 更新:2026-04-30 17:56
  • 阅读:18

【报Bug】uni-app-vue build-type 编译鸿蒙产出.js文件,但运行时UniNativeApp.ets只import() .ets文件,导致白屏

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.66

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 模拟器

手机机型: mate80

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:
  1. HBuilderX 4.66 创建 uni-app 项目,build-type 设为 "uni-app-vue"
    1. 编译到鸿蒙(方式1)
    2. 删除 build-profile.json5 中的 runtimeOnly(否则 hvigor 构建失败,
      因为 .ets 文件不存在)
    3. 方式2构建 .hap 成功
    4. 安装到鸿蒙模拟器 → 白屏

预期结果:

uni-app-vue build-type 编译鸿蒙时,应产出运行时可加载的文件格式,
或运行时应兼容加载 .js 文件。

实际结果:

使用 HBuilderX 4.66,build-type 设置为 "uni-app-vue" 编译鸿蒙应用,
编译成功但运行白屏

bug描述:

使用 HBuilderX 4.66,build-type 设置为 "uni-app-vue" 编译鸿蒙应用, 编译成功但运行白屏

【根因分析】
通过阅读运行时源码 UniNativeApp.ets(第163-192行),确认:

  1. 运行时通过 ArkTS import() 动态导入 www/import/ 下的 .ets 文件:

    • await entryAbility.onImport(${base}/app-config) // 期望 app-config.ets
    • await entryAbility.onImport(${base}/app-service) // 期望 app-service.ets
  2. 但 uni-app-vue build-type 编译产出的是 .js 文件,不是 .ets 文件

  3. import() 失败后异常被 catch(e) 吞掉,globalThis.mount 未被设置,
    Vue 应用无法挂载,导致白屏

2026-04-30 17:56 负责人:无 分享
已邀请:

要回复问题请先登录注册