HarmonyOS 无法找到 OH_JSVM_DefineClass 定义的类
//使用 OH_JSVM_DefineClass 定义类 TestA
JSVM_CallbackStruct param[1];
param[0].data = nullptr;
param[0].callback = JSEngineCore::test;
JSVM_PropertyDescriptor descriptors[] = {
{"test", NULL, ¶m[0], NULL, NULL, NULL, JSVM_STATIC},
};
JSVM_Value testClass = nullptr;
JSVM_CallbackStruct param1;
param1.data = nullptr;
param1.callback = [](JSVM_Env env, JSVM_CallbackInfo info) -> JSVM_Value {
JSVM_Value thisVar = nullptr;
OH_JSVM_GetCbInfo(env, info, nullptr, nullptr, &thisVar, nullptr);
return thisVar;
};
auto status = OH_JSVM_DefineClass(env, "TestA", JSVM_AUTO_LENGTH, ¶m1, sizeof(descriptors) / sizeof(descriptors[0]), descriptors ,&testClass);
//编译并执行一段js脚本,包含自定义类对静态方法的调用
const char* source = "TestA.test()";
auto length = strlen(source);
JSVM_Value sourceCode;
status = OH_JSVM_CreateStringUtf8(env, source, length, &sourceCode);
JSVM_Script script = nullptr;
status = OH_JSVM_CompileScript(env, sourceCode, nullptr, 0, true, nullptr, &script);
JSVM_Value result = nullptr;
// 执行js代码
//这里报错---->"ReferenceError: TestA is not defined\n at <anonymous>:1:1"
status = OH_JSVM_RunScript(env, script, &result);
if (status != JSVM_OK) {
bool isPending = false;
if (JSVM_OK == OH_JSVM_IsExceptionPending((env), &isPending) && isPending) {
JSVM_Value error;
if (JSVM_OK == OH_JSVM_GetAndClearLastException((env), &error)) {
// 获取异常堆栈
JSVM_Value stack;
OH_JSVM_GetNamedProperty((env), error, "stack", &stack);
JSVM_Value message;
OH_JSVM_GetNamedProperty((env), error, "message", &message);
char stackstr[256]{0};
OH_JSVM_GetValueStringUtf8(env, stack, stackstr, 256, nullptr);
char messagestr[256]{0};
OH_JSVM_GetValueStringUtf8(env, message, messagestr, 256, nullptr);
}
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS eglPresentationTime无法找到对应函数
143浏览 • 1回复 待解决
关于 OH_JSVM_CreateReference 创建非对象引用报错
435浏览 • 1回复 待解决
在DevEco Studio上无法找到previewLog的入口
652浏览 • 1回复 待解决
HarmonyOS VideoDecoder无法找到输入视频文件或数据的API
168浏览 • 1回复 待解决
HarmonyOS 数据类中的方法无法被调用
272浏览 • 1回复 待解决
Mac电脑真机调试,无法找到设备,NO Devices
2596浏览 • 1回复 待解决
无法找到“riscv32-unknown-elf-gcc”。
13753浏览 • 2回复 待解决
HarmonyOS关于JSVM中JSVM_Value对象生命周期管理的问题
333浏览 • 1回复 待解决
HarmonyOS工程的Module模块依赖第三方库pako无法找到
1392浏览 • 1回复 待解决
mindspore使用无法查找到libmindspore库怎么办?
2185浏览 • 1回复 待解决
HarmonyOS使用ObjectLink Observed 无法监听到嵌套类的属性更新
399浏览 • 1回复 待解决
HarmonyOS 无法安装@react-native-oh-tpl/react-native-reanimated
245浏览 • 1回复 待解决
文件下载后shell进入存储之后无法找到相应文件
1692浏览 • 1回复 待解决
HarmonyOS har包依赖三方库,三方库中的so,无法找到
512浏览 • 1回复 待解决
定义一个类,怎么在新建这个类的时候,只赋值这个类中某几个属性
1692浏览 • 1回复 待解决
HarmonyOS 关于OH_AudioRenderer的问题
390浏览 • 1回复 待解决
HarmonyOS JSVM是否在Gitee上开源?
159浏览 • 1回复 待解决
HarmonyOS preview的ui,用工具类取颜色值,就无法预览了
46浏览 • 1回复 待解决
定义一个继承已有类的类,导致进入app首页出现白屏,怎么解决?
402浏览 • 1回复 待解决
HarmonyOS 自定义弹窗如何在工具类中使用
28浏览 • 1回复 待解决
HarmonyOS ArkUI的布局回调如何做到自定义、基类
388浏览 • 1回复 待解决
HarmonyOS打完的包,为什么没找到混淆的文件
373浏览 • 1回复 待解决
HarmonyOS OH_AVPlayer* OH_AVPlayer_Create (void ) 这个函数创建的指针怎么释放呢
370浏览 • 1回复 待解决
可以正常访问Remote Emulator 远程模拟器,但是通过hdc 无法找到设备
2533浏览 • 1回复 待解决
关于提供的demo中包含这段代码 const char* source = “TestA.test()”; 想通过OH_JSVM_DefineClass 创建的TestA 然后调用test()方法么,当前OH_JSVM_DefineClass 创建的是JSVM_Value的对象,不能这么调用方法。 使用 OH_JSVM_GetGlobal 接口获取当前 env 的 globalThis 对象,然后使用 OH_JSVM_SetNamedProperty 接口将上面代码创建的 TestA 对象设置为 globalThis 的属性,OH_JSVM_CompileScript 就能识别了。