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 的原生插件,并且由于此问题导致原生插件无法构建,请与该插件的作者联系,看看他们是否发布了修复此问题的新版本。如果没有,最好与作者联系(或打开拉取请求!)。