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に変更できなくなるので、別の対応が必要
- 現在調査中