LoginSignup
0
3

More than 3 years have passed since last update.

Electronをバージョンアップしたらjsのネイティブモジュールが読み込めなくなった話

Posted at

Electron9にバージョンアップしたところ、
途中でアプリの画面が動かなくなってしまう(windowになにも表示がされない)障害が発生しました。

原因

  • Electron9から、appallowrendererprocessreuseのパラメーターがデフォルトで true になってた
  • これによって2回目に読み込まれた時に、jsのネイティブモジュールが読み込めなくなっていた

appallowrendererprocessreuse とは

(公式サイトより) Boolean値。trueのときは、レンダラープロセスが確実に再起動されるように、Electronが設定しているオーバーライドを無効にする。このプロパティは、レンダラープロセスで使用できるネイティブモジュールに影響する
とのこと。名前からして再利用しようとしてうまくモジュールを読み込めてない、というような状況。

対策(暫定対応)

  • ページの初期化処理とかをしている部分で
    • app.allowRendererProcessReuse = false;
  • これまでと変わらないように動かせた

今後

  • issue によると

    • Electron 6 で app.allowRendererProcessReuse オプションを追加
    • コンテキスト非対応のネイティブモジュールについて、Electron 7で最初の非推奨警告ランドを用意する
    • Electron 9 でapp.allowRendererProcessReuseのデフォルト値がtrueに
    • Electron 10でapp.allowRendererProcessReuseを変更する機能を廃止予定
    • Electron 11でapp.allowRendererProcessReuseを変更する機能を削除
  • 今後Electron11では完全にfalseに変更できなくなるので、別の対応が必要

    • 現在調査中
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3