我已将代码从Nan修改为Napi(C ++插件)。此代码使用ObjectWrap类。 在使用Nan之前,当我尝试获取node-addon返回的对象的属性时,它会起作用。
console.log(Object.keys(result));
[ 'bool', 'string', 'int', 'float', 'vtype' ]
现在,使用Napi,当我尝试相同的命令时会得到:
[]
但是对属性的访问仍然有效:
console.log(result.bool);
false
我的初始化代码:
Napi::Object JSVariant::Init(Napi::Env env, Napi::Object exports)
{
Napi::HandleScope scope(env);
Napi::Function ctor = DefineClass(env, "JSVariant", {InstanceAccessor("vtype", &JSVariant::GetVTypeValue, &JSVariant::SetVTypeValue), InstanceAccessor("float", &JSVariant::GetFltValue, &JSVariant::SetFltValue), InstanceAccessor("int", &JSVariant::GetIntValue, &JSVariant::SetIntValue), InstanceAccessor("string", &JSVariant::GetStringValue, &JSVariant::SetStringValue), InstanceAccessor("bool", &JSVariant::GetBoolValue, &JSVariant::SetBoolValue)});
constructor = Napi::Persistent(ctor);
constructor.SuppressDestruct();
exports.Set("JSVariant", ctor);
return exports;
}
有没有办法用Napi获得Nan的结果?