v8 NAN 支持从 Nodejs 10 迁移到 14
v8 NAN support moving from Nodejs 10 to 14
在 Windows 上,我的 NodeJS / Electron 应用依赖于本机库。该应用程序通过基于 NAN.
的第 3 方节点模块与该库交互
此模块运行良好但已过时。这迫使我们坚持使用 Nodejs v10.x.x。否则 v14.x.x npm install
命令失败并显示
error C2661: 'v8::Value::BooleanValue': no overloaded function takes 0 arguments
我能够追踪到 v8 引擎中的 API,这些 API 在 v10.x.x 中被标记为折旧并在 v14.x.x 中被删除(实际 v12.x.x)。我通过更改
中的代码在本地修复了它
info[0]->BooleanValue()
到
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 模块支持不同版本的 Nodejs 吗?即考虑到不兼容的 v8 API 更改?可以在代码中处理对不同版本的支持吗?或者维护者被迫发布不同版本的模块,严格支持 Nodejs 版本。
在 NodeJS 帮助站点上询问了上述问题并收到了以下答案
https://github.com/nodejs/help/issues/2722
Nan::To<bool>(info[0]).FromJust()
完美适用于 NodeJS 10、12 和 14。
在 Windows 上,我的 NodeJS / Electron 应用依赖于本机库。该应用程序通过基于 NAN.
的第 3 方节点模块与该库交互此模块运行良好但已过时。这迫使我们坚持使用 Nodejs v10.x.x。否则 v14.x.x npm install
命令失败并显示
error C2661: 'v8::Value::BooleanValue': no overloaded function takes 0 arguments
我能够追踪到 v8 引擎中的 API,这些 API 在 v10.x.x 中被标记为折旧并在 v14.x.x 中被删除(实际 v12.x.x)。我通过更改
中的代码在本地修复了它info[0]->BooleanValue()
到
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 模块支持不同版本的 Nodejs 吗?即考虑到不兼容的 v8 API 更改?可以在代码中处理对不同版本的支持吗?或者维护者被迫发布不同版本的模块,严格支持 Nodejs 版本。
在 NodeJS 帮助站点上询问了上述问题并收到了以下答案
https://github.com/nodejs/help/issues/2722
Nan::To<bool>(info[0]).FromJust()
完美适用于 NodeJS 10、12 和 14。