【问题标题】:Passing an object to a Node.js C++ Addon将对象传递给 Node.js C++ 插件
【发布时间】:2018-05-11 03:19:57
【问题描述】:

https://medium.com/@muehler.v/tutorial-to-node-js-native-c-modules-part-2-arrays-json-and-callbacks-9b81f09874cd

我正在关注上述文章,试图访问传递给 C++ 节点插件函数的对象中的字符串。我的功能在下面,但我无法将它作为插件编译。当我这样做时,我得到了错误:

../addon.cpp:239:26: error: no viable conversion from 'MaybeLocal<v8::Value>' (aka 'v8::MaybeLocal<v8::Value>') to 'v8::Local<v8::Value>'
    v8::Local<v8::Value> pwdValue = Nan::Get(obj, pwdProp);
                         ^          ~~~~~~~~~~~~~~~~~~~~~~

关于如何解决此错误的任何想法?谢谢

NAN_METHOD(init) {
  v8::Local<v8::Object> obj = info[0]->ToObject();
  v8::Local<v8::String> pwdProp = Nan::New("PWD").ToLocalChecked();

  std::string pwd = "";

  if (Nan::HasOwnProperty(obj, pwdProp).FromJust()) {
    v8::Local<v8::Value> pwdValue = Nan::Get(obj, pwdProp);
    pwd = std::string(*Nan::Utf8String(pwdValue->ToString()));
  }

  std::cout << pwd << std::endl;
}

【问题讨论】:

    标签: c++ node.js node.js-addon


    【解决方案1】:

    Nan::Get 返回一个MaybeLocal,由于docs 中提到的原因,它可能为空。

    您可以使用.ToLocalChecked()MaybeLocal 获取Local 句柄,如下所示:v8::Local&lt;v8::Value&gt; pwdValue = Nan::Get(obj, pwdProp).ToLocalChecked();

    要检查 MaybeLocal 是否真的持有一个值,你可以检查bool isEmpty = Nan::Get(obj, pwdProp).IsEmpty()

    【讨论】:

      猜你喜欢
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2016-11-15
      • 2018-11-09
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      相关资源
      最近更新 更多