electron.js (v11) + better-sqlite3(v7.1.0)でモジュールがロードされない

状況

  • electron.js (v11) + better-sqlite3(v7.1.0)で発生した。
  • better-sqlite3をrequireすると下記のエラーが発生する。
  • エラーメッセージ : TypeError: Cannot read property 'indexOf' of undefined
  • electron.js (v6) + better-sqlite3(v5.4.0)では発生しなかった。アップデートしたら発生する。

現象について補足

bindingsでnode_modulesディレクトリ内にあるbetter_sqlite3.nodeを読み込むところで失敗している。モジュールがない、ビルドできてないかと思ったが、better_sqlite3.nodeは存在している。

対策

vue.config.jsに設定を追加する。

#vue.config.js
pluginOptions: {
    electronBuilder: {
        externals: ['better-sqlite3']
   }
}