LoginSignup
9
13

More than 5 years have passed since last update.

Electron で sqlite を使う(Node.js の ABI バージョン確認)

Last updated at Posted at 2016-07-29

(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-x6449 の部分が、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
9
13
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
9
13