2016-02-25 53 views
8

我遵循nan示例,但documention不起作用。Nan構建錯誤

我binding.gyp:

{ 
    "targets":[ 
    { 
     "target_name": "hello", 
     "sources": ["hello.cpp"], 
     "include_dirs": [ 
     "<!(node -e \"require('nan')\")" 
     ] 
    } 
    ] 
} 

和我HELLO.CPP:

#include <nan.h> 

using namespace v8; 

NAN_METHOD(Method) { 
    NanScope(); 
    NanReturenValue(String::New("world")); 
} 

void Init(Handle<Object> exports) { 
    exports->Set(NanSymbol("hello"), FunctionTemplate::New(Method)->GetFunction()); 
} 

NODE_MODULE(hello, Init) 

這是確定在node-gyp configure,但是當node-gyp build,它報告錯誤:

../hello.cpp:10:9: error: use of undeclared identifier 'NanScope' 
    NanScope(); 
    ^
../hello.cpp:11:33: error: no member named 'New' in 'v8::String' 
    NanReturenValue(String::New("world")); 
        ~~~~~~~~^ 
../hello.cpp:15:18: error: use of undeclared identifier 'NanSymbol' 
exports->Set(NanSymbol("hello"), FunctionTemplate::New(Method)->GetFunction()); 
      ^
../hello.cpp:15:60: error: cannot initialize a parameter of type 'v8::Isolate *' with an lvalue of type 'Nan::NAN_METHOD_RETURN_TYPE (Nan::NAN_METHOD_ARGS_TYPE)' 
exports->Set(NanSymbol("hello"), FunctionTemplate::New(Method)->GetFunction()); 

我節點版本是最新的5.7.0和節點gyp是最新的3.3.0 nan我最新的2.2.0。 這個例子中使用的一些代碼有沒有可能被棄用? 或者我應該怎麼做才能完成hello示例?謝謝

+0

我有同樣的問題。 – InsaneRabbit

回答

1

我剛剛遇到同樣的問題,從我可以告訴該示例已過期。 以下爲我工作:

#include <nan.h> 

void Method(const Nan::FunctionCallbackInfo<v8::Value>& info) { 
    info.GetReturnValue().Set(Nan::New("world").ToLocalChecked()); 
} 

void Init(v8::Local<v8::Object> exports) { 
    exports->Set(Nan::New("hello").ToLocalChecked(), 
       Nan::New<v8::FunctionTemplate>(Method)->GetFunction()); 
} 

NODE_MODULE(hello, Init) 

基本上而不是使用從代碼 - https://github.com/nodejs/node-addon-examples/tree/master/1_hello_world 我試圖從這裏運行的代碼 - https://github.com/nodejs/node-addon-examples/tree/master/1_hello_world/nan