我一直在使用NodeJS 0.11.x发行版已有一段时间了,主要是因为我认为生成器和yield
语句在异步可管理性方面带来了很大进步(参见coffy-script和{ {3}})。
说,在运行前沿的,不稳定的NodeJS安装时会出现严重的挫折:在执行npm install xy-module
时,gyp
在尝试编译任何C组件时都会失败(总是?有时?)。
这是否必须如此?是否有任何技巧/补丁/配置我可以申请来纠正这种情况?如果给定的模块在NodeJS 0.10.x上编译,但在0.11.x上失败,我是否应该在它可用时立即在0.12.x上编译?
更新我在NodeJS邮件列表和suspend上交叉发布了该问题。引用他的信息:
两个主要变化如下:
Persistent<T>
不再来自Handle<T>
。要重新创建
处理持久性,请致电Local<T>::New(isolate, persistent)
。
您可以使用Isolate::GetCurrent()
获取隔离区(但请注意
Isolate::GetCurrent()
可能会在较新版本的V8中消失。)
C ++回调和访问器的原型已经改变。之前, 你的功能看起来像这样:
Handle<Value> MyCallback(const Arguments& args) {
HandleScope handle_scope;
/* Do useful work, then: */
return handle_scope.Close(Integer::New(42));
/* Or: */
return handle_scope.Close(String::New("hello"));
/* Or: */
return Null();
}
在v0.11和v0.12中变为:
void MyCallback(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
HandleScope handle_scope(isolate);
/* Do useful work, then: */
args.GetReturnValue().Set(42);
/* Or: */
args.GetReturnValue().Set(String::NewFromUtf8(isolate, "hello"));
/* Or: */
args.GetReturnValue().SetNull();
}
有更多更改,但这两个更改会影响每个本机加载项。
答案 0 :(得分:0)
在NodeUp#52中详细回答:http://nodeup.com/fiftytwo
摘要:v8 API的主要更改,Node中的一些细微更改以及更改仍在进行中。但是有两个项目旨在帮助解决这个问题,NAN(github / rvagg / nan)和shim / node-addon-layer(github / tjfontaine / node-addon-layer)。