node-gyp 在 hello world 上构建错误
node-gyb build error on hello world
我正在尝试编译 node hello world addon,当我调用
node-gyp configure build
它会产生几个错误。
../binding.cc:6:19: error: unknown type name 'FunctionCallbackInfo'
void Method(const FunctionCallbackInfo<Value>& args) {
^
../binding.cc:6:39: error: expected ')'
void Method(const FunctionCallbackInfo<Value>& args) {
^
../binding.cc:6:12: note: to match this '('
void Method(const FunctionCallbackInfo<Value>& args) {
^
../binding.cc:8:15: error: no matching constructor for initialization of 'v8::HandleScope'
HandleScope scope(isolate);
^ ~~~~~~~
/***/***/.node-gyp/0.10.36/deps/v8/include/v8.h:473:3: note: candidate constructor not viable: no known conversion from 'v8::Isolate *' to 'const v8::HandleScope' for 1st
argument
HandleScope(const HandleScope&);
^
/****/***/.node-gyp/0.10.36/deps/v8/include/v8.h:448:3: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
HandleScope();
^
../binding.cc:9:3: error: use of undeclared identifier 'args'
args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
^
../binding.cc:9:37: error: no member named 'NewFromUtf8' in 'v8::String'
args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
可能是什么问题?
问题是该示例假设您是 运行 节点 0.12,但您是 运行 节点 0.10(从外观上看是 0.10.36)。 Node 0.12 中插件的结构方式发生了很大的(向后不兼容的)变化。
这是 0.10 兼容版本:https://github.com/joyent/node/blob/aa35564ca1c9f3854bc5f7983f2f00cb51f67ffe/test/addons/hello-world/binding.cc
nan
.
一个很棒的包可以处理 Node 版本之间的很多差异
我正在尝试编译 node hello world addon,当我调用
node-gyp configure build
它会产生几个错误。
../binding.cc:6:19: error: unknown type name 'FunctionCallbackInfo'
void Method(const FunctionCallbackInfo<Value>& args) {
^
../binding.cc:6:39: error: expected ')'
void Method(const FunctionCallbackInfo<Value>& args) {
^
../binding.cc:6:12: note: to match this '('
void Method(const FunctionCallbackInfo<Value>& args) {
^
../binding.cc:8:15: error: no matching constructor for initialization of 'v8::HandleScope'
HandleScope scope(isolate);
^ ~~~~~~~
/***/***/.node-gyp/0.10.36/deps/v8/include/v8.h:473:3: note: candidate constructor not viable: no known conversion from 'v8::Isolate *' to 'const v8::HandleScope' for 1st
argument
HandleScope(const HandleScope&);
^
/****/***/.node-gyp/0.10.36/deps/v8/include/v8.h:448:3: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
HandleScope();
^
../binding.cc:9:3: error: use of undeclared identifier 'args'
args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
^
../binding.cc:9:37: error: no member named 'NewFromUtf8' in 'v8::String'
args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
可能是什么问题?
问题是该示例假设您是 运行 节点 0.12,但您是 运行 节点 0.10(从外观上看是 0.10.36)。 Node 0.12 中插件的结构方式发生了很大的(向后不兼容的)变化。
这是 0.10 兼容版本:https://github.com/joyent/node/blob/aa35564ca1c9f3854bc5f7983f2f00cb51f67ffe/test/addons/hello-world/binding.cc
nan
.