如何更新Node.js本机插件以使用新的API?

我的工作需要一个旧的Node.js本机插件,但由于许多本机API弃用,因此不再适用于Node.js 12及更高版本。在数十种错误中,我修复了除一个错误以外的所有错误,这与初始化和调用回调函数有关。新的API需要4个参数,而旧的则需要3个参数。这是损坏的代码:

void node_mpg123_feed_after (uv_work_t *req) {
  Nan::HandleScope scope;
  feed_req *r = (feed_req *)req->data;

  Local<Value> argv[1];
  argv[0] = Nan::New<Integer>(r->rtn);

  Nan::TryCatch try_catch;

  Nan::New(r->callback)->Call(Nan::getcurrentContext()->Global(),1,argv); //Compilation error in this line

  // cleanup
  r->callback.Reset();
  delete r;

  if (try_catch.HasCaught()) {
    FatalException(try_catch);
  }
}

具体地说,note the new API使用4个参数,而contrast it with the old one仅使用3个参数。我不知道要输入什么参数,因为互联网上基本上没有新API的教程,互联网上充斥着旧的破旧示例。

有人能指出我正确的方向吗?我收到的确切错误消息是在上面标记有注释的行中的error C2660: 'v8::Function::Call': function does not take 3 arguments

nwpu_guy 回答:如何更新Node.js本机插件以使用新的API?

浏览完nan sources的nan更改日志后,我发现了一种调用回调的新方法。具体来说,该行:

Nan::New(r->callback)->Call(Nan::GetCurrentContext()->Global(),1,argv);

成为

Nan::Call(Nan::New(r->callback),Nan::GetCurrentContext()->Global(),argv);
本文链接:https://www.f2er.com/2869408.html

大家都在问