Windows & Electron & SQLite3 ビルドエラーの解消

Electron を使用すると HTML & CSS & JS でクロスプラットフォームなデスクトップアプリを開発できます。

建前上は Linux と Windows と macOS とで同じ仕様のソフトウェアを動かすことが可能ということになっていますが、実際には node_modules 以下のモジュールのコンパイルエラーやファイルパス、Node.js のバージョンなどの影響を受けるため、ほかの OS 上で開発されたプロジェクトをそのままクローンして実行しようとするとうまくいかないことが多々あります。

とくに Windows 10 上での実行では、ほかの OS では見たこともないような得体の知れないエラーが頻出します。これは Node.js が部分的に C++ で構成されていたり、一部のモジュールのインストール時に Python のような JS 以外の言語で書かれたスクリプトが実行されたりするためです。

Windows はこうした開発者ツールを備えていませんので、必要な場合はユーザが自身でインストールして設定を行わなければなりません。

私も Windows の使い方が分からないのですが、エラーメッセージをだいぶ見慣れて耐性がついてきたので備忘録代わりに記述しておきます。

動作環境 Windows 10 (ver 1909)

例えば、表題にもなっている SQLite です。

パッケージマネージャ yarn でインストールされた sqlite3 モジュールを Windows 10 上で実行された Electron から利用するとエラーメッセージが表示されます。

これを解消するためには node-gyp を使用して sqlite3 モジュールを実行環境、つまりここでは Windows 10 に適したバイナリファイルに生成しなおしてやらなければなりません。

そこでまずは公式に従って 以下から Windows Python をインストールします。


https://docs.python.org/3/using/windows.html#the-microsoft-store-package


それから Visual C++ Build Environment: Visual Studio Build Tools (using “Visual C++ build tools” workload) or Visual Studio 2017 Community (using the “Desktop development with C++” workload) と指定されているので Visual C++ build tools も一緒にインストールします。


https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools


さいごに Windows PowerShell を起動して以下のように Node.js の windows-build-tools モジュールをインストールします。




ちなみに私は PowerShell の使い方が全く分からないのですが、管理者権限のないユーザがモジュールをインストールしようとすると

Please restart this script from an administrative PowerShell!
The build tools cannot be installed without administrative rights.

という警告文が表示されてエラーになるため、ここは管理者権限で PowerShell を実行してインストールを行っています。

ほかの作業は GitBash (v2.30.1) が連れてきた MINGW64 上で実行しているのですが、ここだけは PowerShell を使わないとうまくインストールできませんでした。

インストールが完了しましたら sqlite3 モジュールを削除して Electron 用にビルドしなおしてやれば、問題なく使用できるようになります。

ビルドのやり方は sqlite3 のドキュメントに従います。

Python のパスを通しているのはエラーを予防するためのもので、もしかしたら必要ないかもしれません。

引数 dist-url の設定値は割と最近に変更されたらしく https://electronjs.org/headers と https://atom.io/download/electron のドキュメントが混在しています。前者は 404 Not found を返すのでここでは後者を採用します。

同様に Electron アプリの実行やビルド段階でエラーが発生する場合、モジュールとファイルパスを確認すると問題が解決する可能性があります。

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Us