3***@qq.com
3***@qq.com
  • 发布:2026-09-23 20:43
  • 更新:2026-09-23 20:43
  • 阅读:33

【报Bug】【uni-app 鸿蒙/Windows】本地 UTS 插件被编译为 @normalized:E:\ 绝对路径,导致地图无法加载,清缓存重建后恢复但再次复发

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 5.26

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 华为

手机机型: HUAWEI Mate 80 Pro Max

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

页面使用鸿蒙原生地图:

<!-- #ifdef APP-HARMONY -->  
<embed  
  tag="amap"  
  :options="harmonyMapOptions"  
  style="width: 100%; height: 280px;"  
></embed>  
<!-- #endif -->

通过插件根目录静态导入:

// #ifdef APP-HARMONY  
import * as harmonyAmapApi from '@/uni_modules/ft-harmony-amap'  
// #endif

生成文件位置:
entry/build/default/cache/default/default@CompileArkTS/esmodule/debug/entry/src/main/ets/uni_modules/index.generated.ts

故障构建中的引用:

import * as ftHarmonyAmap from "@normalized:E:\\harmony-project\\yczt-dev\\uni_modules\\ft-harmony-amap\\utssdk\\app-harmony\\index.ets";

清缓存并恢复依赖、重建后的引用:

import * as ftHarmonyAmap from "@normalized:N&&&@uni_modules/ft-harmony-amap/utssdk/app-harmony/index&1.1.3";

ft-harmony-alocation 同时出现相同地址异常。

操作步骤:

手机系统不能选择鸿蒙7所以只能放在这里写系统版本 1. 使用 Windows 下的 HBuilderX 打开 uni-app Vue3 项目。

  1. 项目接入 ft-harmony-amap、ft-harmony-alocation 鸿蒙 UTS 插件,通过插件根目录静态导入。
  2. 通过 HBuilderX 构建并运行到鸿蒙真机。
  3. 打开“项目管理 → 新增项目”,该页面会创建 tag="amap" 的原生地图。
  4. 在出现问题的构建中,地图无法加载;未做插件就绪保护时会闪退。
  5. 检查生成工程 index.generated.ts,可以看到插件被引用为 @normalized:E:... 绝对路径。
  6. 清理鸿蒙缓存、恢复依赖并完整重建,模块地址恢复正常。

说明:这是实际出现问题的操作路径,目前尚未提炼出每次必现的最小复现项目。问题曾在修复后再次出现。

预期结果:

鸿蒙 UTS 插件应被编译成设备可解析的模块地址,安装后正常加载并注册原生地图组件。

增量构建或工具版本变化后,不应复用无效的本地绝对路径。清理构建缓存后,应正确恢复所需依赖,或明确提示执行依赖安装。手机系统不能选择鸿蒙7所以只能放在这里写系统版本

实际结果:

插件引用被编译为 @normalized:E:... 的 Windows 本地路径,手机无法加载。

真机日志:
export objects of native so is undefined
ModuleName: E:\harmony-project\yczt-dev\uni_modules\ft-harmony-amap\utssdk\app-harmony\index.ets
Reason: module not found

未增加保护时,创建原生地图触发:
TypeError: Cannot read property nodeRenderType of undefined
at NativeEmbedNodeController
at onNativeEmbedLifecycleChange

增加插件就绪保护后不再闪退,但地图一直显示“加载中”。

清理缓存并恢复依赖、完整重建后,插件地址恢复正常。手机系统不能选择鸿蒙7所以只能放在这里写系统版本

bug描述:

uni-app Vue3 项目使用鸿蒙 UTS 插件 ft-harmony-amap 1.1.3 和 ft-harmony-alocation 1.0.4,在 Windows 上通过 HBuilderX 构建并运行到鸿蒙真机。

进入“项目管理 → 新增项目”时,鸿蒙原生地图无法加载。未增加保护时应用闪退,错误为:
Cannot read property nodeRenderType of undefined

增加插件可用性检查后,故障出现时页面一直显示“地图加载中”。

检查生成工程发现,index.generated.ts 中两个插件的模块引用被编译为 @normalized:E:\harmony-project\yczt-dev... 这样的电脑绝对路径。真机日志同时报告对应模块不存在、导出对象为 undefined。

清理鸿蒙构建缓存并完整重建后,引用恢复为正常的 @normalized:N&&&包名/路径&版本 格式。首次修复后已经真机确认地图恢复正常,但后续构建再次出现相同问题。

首次发生于 HBuilderX 5.23,近期在 5.26 再次出现。具体触发条件尚未确定,不能确认是否由升级或增量构建引起。

另一个现象:此次通过 --cleanCache true 清理后,生成工程根目录 oh_modules 缺失,编译提示找不到 uni-app-runtime、高德插件等依赖。执行 ohpm install --all 恢复依赖后再次构建成功。

希望协助排查本地 UTS 插件的模块路径生成、缓存失效及清缓存后的依赖恢复流程。安卓和 iOS 未出现此问题。

2026-09-23 20:43 负责人:无 分享
已邀请:

要回复问题请先登录注册