メインコンテンツにスキップ

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に置き換えてください。前者は後者のエイリアスに過ぎなかったため、この特定の問題に対処するためには、他に変更を加える必要はありません。

また、Node.js自体の一部としてV8とは別に保守されており、ネイティブアドオンを基盤となるJavaScriptエンジンの変更から隔離することを目的としたN-APIについても調べてみるとよいかもしれません。詳細については、Node.jsのウェブサイトにあるN-APIのドキュメントをご覧ください。

助けて! アプリでネイティブアドオンを使用していますが、動作しません!

アプリでNode.jsのネイティブアドオンを使用していて、この問題が原因でネイティブアドオンがビルドされない場合は、アドオンの作成者に問題を修正した新しいバージョンがリリースされているかどうかを確認してください。リリースされていない場合は、作成者に連絡するか(またはプルリクエストを開く!)のがおそらく最善の方法です。