uni-app uts插件编译到鸿蒙不支持import * as xxx from '@/uni_modules/uts-getbatteryinfo'的写法白屏报错

uni-app uts插件编译到鸿蒙不支持import * as xxx from '@/uni_modules/uts-getbatteryinfo’的写法白屏报错

开发环境 版本号 项目创建方式
Mac 15.6.1 HBuilderX

产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:15.6.1
HBuilderX类型:正式
HBuilderX版本号:4.76
手机系统:HarmonyOS NEXT
手机系统版本号:HarmonyOS 5.0.5
手机厂商:华为
手机机型:nova 12 pro
页面类型:vue
vue版本:vue3
打包方式:云端

示例代码:

插件代码直接拷贝的:https://gitcode.com/dcloud/uni-api/tree/master/uni_modules/uni-getbatteryinfo 然后引用  

操作步骤:

编译到鸿蒙手机

预期结果:

可以使用

实际结果:

白屏

bug描述:

白屏,无法使用:
import * as BatteryInfo from '@/uni_modules/uts-getbatteryinfo'
console.log("BatteryInfo", BatteryInfo)  

//报错OH_JSVM_CallFunction failed TypeError: 'getOwnPropertyDescriptor' on proxy: trap reported non-configurability for property 'getBatteryInfo' which is either non-existent or configurable in the proxy target  

这种可以正常使用:
// import {getBatteryInfo} from '@/uni_modules/uts-getbatteryinfo'
// console.log("getBatteryInfo",getBatteryInfo)

更多关于uni-app uts插件编译到鸿蒙不支持import * as xxx from '@/uni_modules/uts-getbatteryinfo'的写法白屏报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

附件代码 import语句在 index.js中

更多关于uni-app uts插件编译到鸿蒙不支持import * as xxx from '@/uni_modules/uts-getbatteryinfo'的写法白屏报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


试了几个官方demo中的插件拷贝过来都不能import *,但是在安卓和iOS下这样用没有问题

感谢反馈Bug已确认,加分。预计下个alpha修复此问题

这是鸿蒙平台对UTS模块导入方式的兼容性问题。在鸿蒙系统上,目前不支持使用import * as方式导入UTS插件。

问题分析:

  1. import * as BatteryInfo from '@/uni_modules/uts-getbatteryinfo' 这种命名空间导入方式在鸿蒙平台会触发代理对象的属性描述符检查,导致getOwnPropertyDescriptor错误
  2. 鸿蒙的JS运行时对ES模块的代理机制与iOS/Android存在差异

解决方案: 使用具名导入方式替代命名空间导入:

import { getBatteryInfo } from '@/uni_modules/uts-getbatteryinfo'
console.log("getBatteryInfo", getBatteryInfo)

或者使用默认导入(如果插件支持):

import getBatteryInfo from '@/uni_modules/uts-getbatteryinfo'
console.log("getBatteryInfo", getBatteryInfo)
回到顶部