【发布时间】:2017-01-20 14:34:53
【问题描述】:
我正在使用节点 6.9.1,并尝试创建一个 cpp 插件来创建节点缓冲区对象。经过一番研究,我想出了以下代码:
#include <node.h>
#include <node_buffer.h>
#include <v8.h>
using v8::Local;
using v8::Object;
using v8::HandleScope;
using v8::Isolate;
Local<Object> create_buffer(Isolate* isolate, char* rawData, int length) {
HandleScope scope(isolate);
Local<Object> buf = node::Buffer::New(
isolate,
rawData,
length).ToLocalChecked();
return buf;
}
我使用如下:
Local<Value> buff = create_buffer(isolate, rawData, length);
const unsigned argc = 1;
Local<Value> argv[argc] = { buff };
cb->Call(Null(isolate), argc, argv);
这段代码编译得很好,但是当我通过回调访问缓冲区的 .length 属性时会导致错误:
Security context: 0x9d84c7cfb51 <JS Object>#0#
我找到了几个教程,但它们都使用 v8/node api 的早期版本,我找不到任何信息,什么是在最近的 Node 版本中创建缓冲区的正确方法。我也有可能在某个地方犯了错误。如果您能引导我朝正确的方向前进,请提前致谢。
【问题讨论】:
-
看来我应该只用nan
标签: c++ node.js node.js-addon