跳至主要内容

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::Handle 的 V8 版本,并且仍然使用它的 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 感兴趣,N-API 作为 Node.js 本身的一部分独立于 V8 进行维护,旨在使原生插件免受底层 JavaScript 引擎更改的影响。您可以在 Node.js 网站上的 N-API 文档 中找到更多信息。

帮助!我在我的应用中使用了一个原生插件,但它无法工作!

如果您在应用中使用 Node.js 的原生插件,并且由于此问题导致原生插件无法构建,请与插件作者联系,查看他们是否发布了修复此问题的最新版本。如果没有,联系作者(或 提交一个 Pull Request!)可能是您最好的选择。