Я исследую родные аддоны Node, используя Nan.
Поэтому я пытаюсь вернуть в Node массив строк со следующим кодом:
NAN_METHOD(open) {
Local<Array> v8Array = Nan::New<Array>();
std::string str = "erwer";
v8Array->Set(0, Nan::New<String>(str.c_str()) );
//v8Array->Set(0, Nan::New<Integer>(12) );
info.GetReturnValue().Set(v8Array);
}
Но это не скомпилировано:
error: no matching function for call to ‘v8::Array::Set(int, Nan::imp::MaybeFactoryBase<v8::String>::return_t)’
v8Array->Set(0, Nan::New<String>(str.c_str()) );
Но добавление элемента в виде целого числа (закомментированная строка) работает правильно.
Почему я не могу добавить строку в массив?
Итак, наконец я понял, что второй аргумент в случае, если он является строкой, должен быть заключен в ToLocalChecked ():
v8Array->Set(i, Nan::New<String>(results[i].c_str()).ToLocalChecked() );
Других решений пока нет …