nodejs:没有返回值的函数模​​板

时间:2013-08-07 07:52:52

标签: node.js function-templates node-gyp

我按照node.js的指示实施工厂包装的物品 到目前为止它的作用。但是我没有工作的是没有返回值的函数 即:(链接中示例的扩展)
myObject.h

tpl->PrototypeTemplate()->Set(String::NewSymbol("some"),
  FunctionTemplate::New(something)->GetFunction());

static void something (const v8::Arguments& args);

并在myObject.cc

void MyObject::something(const Arguments& args) {
  .. something without return value ...
}

不起作用。为什么呢?

我收到以下错误:

error: invalid conversion from ‘void (*)(const v8::Arguments&)’ to ‘v8::InvocationCallback {aka v8::Handle<v8::Value> (*)(const v8::Arguments&)}’ [-fpermissive]
error: initializing argument 1 of ‘static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::InvocationCallback, v8::Handle<v8::Value>,  v8::Handle<v8::Signature>)’ [-fpermissive]

我真的需要一个返回值吗?我的意思是我可以返回null并忽略它,不是问题,但这不是一个很好的解决方案。

1 个答案:

答案 0 :(得分:1)

错误是因为FunctionTemplate::New()需要InvocationCallback,其return类型为Handle<Value>

所以,你必须return一些东西,但它可以只是Undefined()

Handle<Value> MyObject::something(const Arguments& args) {
    HandleScope scope;
    return scope.Close(Undefined());
}

这相当于:

function something() {}

其中包含隐式return;(或return undefined;)。