跳到主要內容

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,它與 V8 分開維護,作為 Node.js 本身的一部分,旨在使原生附加元件免受底層 JavaScript 引擎變更的影響。您可以在 Node.js 網站上的 N-API 文件中找到更多資訊。

救命啊!我在我的應用程式中使用原生附加元件,但它無法運作!

如果您在應用程式中使用了 Node.js 的原生附加元件,並且該原生附加元件由於此問題而無法建置,請與該附加元件的作者聯繫,以查看他們是否發布了修復該問題的新版本。如果沒有,則聯絡作者(或開啟 Pull Request!)可能是您的最佳選擇。