HarmonyOS 鸿蒙Next class-transformer三方组件使用问题

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next class-transformer三方组件使用问题

目前使用class-transformer有以下两个问题

  1. 使用@Type(() => Car)声明了嵌套数据类型,但是应用启动后出现crash

  2. 使用泛型作为plainToClass的第一参数,如果调用的数据类型不在该接口的模块下,返回的并不是指定的数据类型

  3. 具体demo在附件中
    如下是调用的方法

let value = plainToClass(User, plainUser, {excludeExtraneousValues: true, enableCircularCheck: true})
console.log(value.lastName)

报错信息如下:

Js-Engine: ark page: pages/Index.js  
Error message: is not callable  
SourceCode: var reflectedType = Reflect.getMetadata('design:type', target, propertyName);

Stacktrace:

at anonymous (entry/oh_modules/.ohpm/class-transformer@0.5.1/oh_modules/class-transformer/esm5/decorators/type.decorator.js:13:25)  
at func_main_0 (entry/src/main/ets/pages/data.ts:1:1)
  1. 在泛型转换的场景下使用plainToClass,如果出现跨模块调用的情况下,会出现转换失效,返回完整的json数据
    A模块中定义了请求转换的接口
async request<T = any>(request: Request): Promise<Response<T>>

B模块中调用该模块的request去转换

let reponse = request<DataClass>(request);

期待:reponse获取到的数据只有DataClass定义的数据。
实际:reponse获取到的数据是完整的json数据。

这是为什么呢?有没有什么解决办法?


更多关于HarmonyOS 鸿蒙Next class-transformer三方组件使用问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

1、使用@Type(() => Car)声明了嵌套数据类型,但是应用启动后出现crash
使用@Type装饰器的时候,确保引入reflect-metadata

2、使用范型做作为plainToClass的第一参数,如果调用的数据类型不在该接口的模块下,返回的并不是指定的数据类型

plainToClass只能接受具体的类实例对数据做转型,不能在指定数据类型的情况下对数据转型并输出实体数据对象。

处理意见及解决措施如下:

1、引入 import “reflect-metadata”

2、目前class-transformer不支持指定数据类型做数据转换,只支持对实体的数据类型对象做JSON数据转换

更多关于HarmonyOS 鸿蒙Next class-transformer三方组件使用问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


引入 import "reflect-metadata" 后,则无法编绎通过了。

1 ERROR: ArkTS:ERROR Failed to resolve OhmUrl. Error Message: Failed to get a resolved OhmUrl for “reflect-metadata” imported by “xxxxxxx/objects/XXXXInfoResult.ets”.

  • Try the following:
    • Check whether the module which reflect-metadata belongs to is correctly configured.
    • Check the corresponding file name is correct (including case-sensitivity).

COMPILE RESULT:FAIL {ERROR:2 WARN:2}

这又是啥回事?

针对HarmonyOS(鸿蒙)系统中Next class-transformer三方组件的使用问题,以下提供直接且专业的回答:

Next class-transformer在鸿蒙系统中的应用可能涉及字节码增强或转换技术,用于在运行时修改类的行为或结构。若在使用该组件时遇到问题,首先需确认以下几点:

  1. 组件版本兼容性:确保所使用的Next class-transformer版本与鸿蒙系统的版本兼容。不同版本的鸿蒙系统可能对第三方组件的兼容性有所不同。

  2. 依赖项完整:检查项目中是否已正确引入Next class-transformer的所有依赖项,包括其可能依赖的其他库或框架。

  3. 权限设置:鸿蒙系统对应用权限有严格管理,确保应用已获取执行字节码转换所需的必要权限。

  4. 使用方式正确:参考Next class-transformer的官方文档或示例代码,确保组件的使用方式正确无误。

  5. 错误日志分析:详细查看应用运行时的错误日志,分析导致问题的具体原因。

若上述检查后问题仍未解决,可能是组件与鸿蒙系统的特定实现存在冲突或兼容性问题。此时,建议直接联系组件的开发者或维护者寻求帮助。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部