Node-API提供了一批接口帮助把标准数据类型转为napi_value,比如napi_create_double、napi_create_int32等等,但是napi_create_bool无法创建bool类型并转换为napi_value。

HarmonyOS Node-API是基于Node.js 10.x LTS的Node-API规范扩展开发的机制,为开发者提供了ArkTS/JS与C/C++模块之间的交互能力。它提供了一组稳定的、跨平台的API,可以在不同的操作系统上使用。一般情况下HarmonyOS应用开发使用ArkTS/JS语言,但部分场景由于性能、效率等要求,比如游戏、物理模拟等,需要依赖使用现有的C/C++库。Node-API规范封装了I/O、CPU密集型、OS底层等能力并对外暴露ArkTS/JS接口,从而实现ArkTS/JS和C/C++的交互。
使用napi_get_boolean即实现将C++中的bool类型转换为napi,参考代码如下:
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2026-2026. All rights reserved.
*/
#include "napi/native_api.h"
bool GetExcuteResult()
{
return true;
}
static napi_value BooleanJudge(napi_env env, napi_callback_info info)
{
bool value = GetExcuteResult();
napi_value jsResult;
napi_get_boolean(env, value, &jsResult);
return jsResult;
}
EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports)
{
napi_property_descriptor desc[] = {
{ "booleanJudge", nullptr, BooleanJudge, nullptr, nullptr, nullptr, napi_default, nullptr }
};
napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
return exports;
}
EXTERN_C_END
static napi_module demoModule = {
.nm_version = 1,
.nm_flags = 0,
.nm_filename = nullptr,
.nm_register_func = Init,
.nm_modname = "entry",
.nm_priv = ((void*)0),
.reserved = { 0 },
};
extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
{
napi_module_register(&demoModule);
}
napi_get_boolean的函数定义:根据给定的C中的boolean值,获取js中的bool对象。