在我目前正在处理的 C++ NodeJS 项目中,我想要一个包含嵌套对象的对象,例如
console.log(object.myObject); // { [keys: string]: any }
在没有将对象绑定(bind)到属性的情况下,我的插件运行良好。我用
创建实例auto ctor = Nan::New<v8::FunctionTemplate>(New);
auto ctorInst = ctor->InstanceTemplate();
并将对象绑定(bind)到类实例上
v8::Local<v8::Object> obj = Nan::New<v8::Object>();
ctorInst->Set(Nan::New("myObject").ToLocalChecked(), obj);
在执行 JS 代码时打印以下内容(创建 C++ 扩展的实例)。
# Fatal error in , line 0
# Check failed: !value_obj->IsJSReceiver() || value_obj->IsTemplateInfo().
另一方面,绑定(bind)原语(数字、字符串等)可以完美地工作。
ctorInst->Set(Nan::New("myObject").ToLocalChecked(), Nan::New<v8::Number>(42));
您有什么建议吗?谢谢,干杯!
最佳答案
所有模板(包括 InstanceTemplate 的模板)中只能包含其他模板或基元。如您所见,IsTemplateInfo
为假,而它本应为真。提出并回答了类似的问题here .只需制作一个 ObjectTemplate然后像使用 FunctionTemplate
一样填充它。
只有当模板被实例化时(使用 GetFunction
),您才能用真实的对象填充它。
关于c++ - NodeJS Nan C++ 将嵌套对象绑定(bind)到插件实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52906437/