NAN支持从Nodejs 10迁移到14"/>
v8 NAN支持从Nodejs 10迁移到14
在Windows上,我的NodeJS / Electron应用程序依赖于本机库。该应用程序通过基于NAN的第三方节点模块与此库进行交互。
此模块运行良好,但已过期。这迫使我们坚持使用Nodejsv10.x.x。否则,v14.x.x npm install
命令将失败,并带有
错误C2661:'v8 :: Value :: BooleanValue':没有重载函数接受0个参数
我能够追踪到v8引擎中在v10.x.x中标记为已贬值并在v14.x.x(实际为v12.x.x)中删除的API。我通过更改
中的代码在本地修复了它info[0]->BooleanValue()
to
info[0]->BooleanValue(Nan::GetCurrentContext()->GetIsolate())
即类似于另一个模块上的this PR。
缺点是这会给使用Node 10.x.x的人带来错误
error C2664: 'bool v8::Value::BooleanValue(void) const': cannot convert argument 1 from 'v8::Isolate *' to 'v8::Local<v8::Context>'
有没有很好的方法来用NAN模块支持不同版本的Node.js?即考虑到不兼容的v8 API的更改?可以在代码中处理对不同版本的支持吗?还是维护者被迫发布对模块的严格支持Nodejs版本的不同版本。
回答如下:在NodeJS帮助站点上询问了以上问题,并收到了以下答案
https://github/nodejs/help/issues/2722
Nan::To<bool>(info[0]).FromJust()
对于NodeJS 10、12和14来说非常合适。
更多推荐
v8 NAN支持从Nodejs 10迁移到14
发布评论