v8 NAN支持从Nodejs 10迁移到14

问题描述 投票:0回答:1

在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版本的不同版本。

node.js native v8
1个回答
0
投票

在NodeJS帮助站点上询问了以上问题,并收到了以下答案

https://github.com/nodejs/help/issues/2722

Nan::To<bool>(info[0]).FromJust()

对于NodeJS 10、12和14来说非常合适。

© www.soinside.com 2019 - 2024. All rights reserved.