c++ - NodeJS Nan C++ 将嵌套对象绑定(bind)到插件实例

标签 c++ node.js v8

在我目前正在处理的 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/

相关文章:

c++ - 在 C++ 中重载新运算符

c++ - 你如何在 Xcode 6 中更新文件路径

PM2 的 Node.JS 内存泄漏

javascript - Node.js:1D 与 2D 数组中的 100M 个元素——意外的内存问题

c++ - 如何从 `Isolate` 句柄获取 `Local<Object>`?

Python Ctypes : Loading C++ DLL - "module not found" or "function ' fn_12 3' not found"

c++ - 确定 Qt 库链接

javascript - 我的不和谐机器人代码正在运行,但没有响应我的命令

node.js - 我该如何解决 npm 错误! js错误:0909006C:PEM in Node.?

c++ - 如何维护 V8 上下文以供将来使用?