Поскольку nodejs >= 10, функция FunctionCallbackInfo::Callee устарела (https://github.com/nodejs/nan/blob/master/CHANGELOG.md). Мне нужно обновить код С++, который использует v8, где использовалось имя вызываемого метода. Как это получить сейчас?
Вместо этого рекомендуется использовать info.Data()
. Но я не понимаю, как получить имя метода из этого. Я предполагаю, что это происходит примерно так:
void GetData(IN const Nan::FunctionCallbackInfo<v8::Value>& info)
{
v8::Local<v8::Function> data = v8::Local<v8::Function>::Cast(info.Data());
....
}
Как получить имя метода из data
? Судя по документации, это уже невозможно (https://github.com/nodejs/nan/blob/master/doc/methods.md):
Note: FunctionCallbackInfo::Callee is removed in Node.js after 10.0.0 because it is was deprecated in V8. Consider using info.Data() to pass any information you need.
Итак, если не предоставлена дополнительная информация, нет ли способа получить имя вызываемого абонента?
Это помогло:
v8::Local<v8::Function> out;
out = v8::Local<v8::Function>::Cast(info.Data());
v8::String::Utf8Value callee(out->GetName()->ToString());