nodejs c ++ addon - 无法使用nan模块构建node-gyp

时间:2017-05-28 08:22:54

标签: node.js node.js-nan

我正在学习如何为nodejs构建C / C ++插件。

我可以在一个简单的hellow world程序上成功地进行node-gyp配置,node-gyp构建和运行node index.js。所以,我的基本设置正在运行。下面的代码(官方nodejs文档中的copy-paste)是我的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文档已经过时了。我尝试了改变,但它仍然没有奏效。它给出了一个错误说&#34; Scope不是Nan&#34;的成员。

我无法找到,如何正确使用Nan版本。任何帮助都将受到高度赞赏。

0 个答案:

没有答案