(1) Electron の ABI バージョンの取得方法:
Electron を ELECTRON_RUN_AS_NODE=1
で Node.js モードで起動したとき、
最新の Node.js と ABI (application binary interface) バージョン番号が違うことがある。
以下のコマンドで、49
とかの番号を確認できる。
ELECTRON_RUN_AS_NODE=1 electron -e 'process.stdout.write(process.versions.modules)'
(2) Electron から sqlite3 を使う準備:
electron-rebuild でモジュールをリビルドする必要がある。
npm install --save sqlite3
electron-rebuild -w sqlite3
(3) Electron から他の JS ファイルを実行する手順:
var child_process = require("child_process");
var cmd = process.argv[0];
var args = ["app.js"];
var env = {ELECTRON_RUN_AS_NODE: "1"};
var options = {env: env}
child_process.execFile(process.execPath, args, options);
(4) Electron から起動した他の JS ファイルで、sqlite3 を使うとき:
Electron を ELECTRON_RUN_AS_NODE=1
で Node.js モードで起動したとき、
require("sqlite3")
すると ABI の違いでエラーになり、SQLite を使えない。
Error: Cannot find module './node_modules/sqlite3/lib/binding/node-v49-darwin-x64/node_sqlite3.node'
node-v49-darwin-x64
の 49
の部分が、Electron の Node.js の ABI バージョン。
Electron では electron-v1.3-darwin-x64
が使えるので、リンクすると使えるようになる。
cd node_modules/sqlite3/lib/binding
ln -s electron-v1.3-darwin-x64 node-v49-darwin-x64
ELECTRON_RUN_AS_NODE=1 electron node_modules/sqlite3