Аддон nodejs C++ - невозможно построить узел с помощью модуля nan
Я учусь создавать дополнения C/C++ для nodejs.
Я мог бы успешно сконфигурировать node-gyp, построить node-gyp и запустить файл index.js в простой программе hellow world. Итак, моя основная настройка работает. Приведенный ниже код (copy-paste из официальной документации nodejs) является рабочей версией моего кода C++.
//hello.cc
//#include <node.h>
//#include <nan.h>
#include "./node_modules/nan/nan.h"
#include <iostream>
using namespace v8;
namespace demo {
using v8::FunctionCallbackInfo;
using v8::Isolate;
using v8::Local;
using v8::Object;
using v8::String;
using v8::Value;
void Method (const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
std::cout << "Executing some stupid func..." << std::endl;
args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
}
void init(Local<Object> exports) {
NODE_SET_METHOD(exports, "hello", Method);
}
NODE_MODULE(addon, init)
} // namespace demo
Однако когда я использую модуль Nan и версию кода, задокументированную на сайте nan, я получаю ошибки компиляции, указывающие, что NanScope не объявлен в этой области.
//hello.cc
#include "./node_modules/nan/nan.h"
#include <iostream>
using namespace v8;
NAN_METHOD(Method) {
Nan::NanScope();
NanReturnValue(String::New("world"));
}
void init(Handle<Object> exports) {
exports->Set(NanSymbol("hello"),
FunctionTemplate::New(Method)->GetFunction());
}
NODE_MODULE(hello, init)
Часть вывода ошибок...
make: Entering directory '/home/rvnath/projects/comviva/node-addons/hello-world/build'
CXX(target) Release/obj.target/addon/hello1.o
../hello1.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE Method(Nan::NAN_METHOD_ARGS_TYPE)’:
../hello1.cc:7:14: error: ‘NanScope’ was not declared in this scope
NanScope();
^
После нескольких поисков, несколько сайтов указали, что мы должны использовать Nan::Scope, и что документация Nan устарела. Я попробовал изменение, но оно все еще не работало. Это дает ошибку, говоря: "Сфера не является членом Nan".
Я не могу найти, как правильно использовать версию Nan. Любая помощь здесь будет высоко оценена.