Node.js 原生插件和 Electron 5.0
·2 分钟阅读
如果您在使用 Electron 5.0 的原生 Node.js 插件时遇到问题,则可能需要更新它才能与最新版本的 V8 一起使用。
告别 v8::Handle
,你好 v8::Local
在 2014 年,V8 团队弃用了 v8::Handle
,转而使用 v8::Local
作为本地句柄。Electron 5.0 包含一个版本的 V8,该版本最终完全移除了 v8::Handle
,仍然使用它的原生 Node.js 插件需要更新后才能与 Electron 5.0 一起使用。
所需的代码更改非常小,但是*每个*仍然使用 v8::Handle
的原生 Node 模块都将无法使用 Electron 5.0 构建,并且需要进行修改。好消息是 Node.js v12 也将包含此 V8 更改,因此任何使用 v8::Handle
的模块*无论如何*都需要更新以与即将到来的 Node 版本一起使用。
我维护一个原生插件,我该如何帮忙?
如果您维护 Node.js 的原生插件,请确保将所有出现的 v8::Handle
替换为 v8::Local
。前者只是后者的别名,因此无需进行其他更改来解决此特定问题。
您可能也有兴趣了解 N-API,它作为 Node.js 本身的一部分与 V8 分开维护,旨在使原生插件免受底层 JavaScript 引擎更改的影响。您可以在 Node.js 网站上的 N-API 文档中找到更多信息。
求助!我在我的应用中使用了一个原生插件,但它无法工作!
如果您在您的应用中使用了 Node.js 的原生插件,并且由于此问题导致原生插件无法构建,请与该插件的作者联系,看看他们是否发布了修复此问题的新版本。 如果没有,联系作者(或打开一个拉取请求!)可能是您最好的选择。