Передача объекта в аддон Node.js C ++ - PullRequest
0 голосов
/ 11 мая 2018

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;
}

1 Ответ

0 голосов
/ 11 мая 2018

Nan::Get возвращает MaybeLocal, которое может быть пустым по причинам, указанным в документах .

. Дескриптор Local можно получить из MaybeLocal, используя.ToLocalChecked() следующим образом: v8::Local<v8::Value> pwdValue = Nan::Get(obj, pwdProp).ToLocalChecked();.

Чтобы проверить, действительно ли значение MaybeLocal содержит значение, вы можете проверить bool isEmpty = Nan::Get(obj, pwdProp).IsEmpty().

...