tetu式

ゲームと音楽・作曲の自己満足と悩みどころの多いプログラムのブログ。

Electron v1.8.4はNode v10.0.0でパッケージングできない

またまた新技術勉強。

といっても今回は言語じゃなくてソフトウェアフレームワークのElectronについて。

Electronってなんぞ?って人はググってくださいと言ったところですが、
平たくいうとWebで使う言語(HTML,CSS,Javascript)を使用して
デスクトップアプリが作れちゃう代物です。

Slackとか日頃お世話になってるゲーム特化のチャットソフトのDiscordのアプリ版もこれで作られてるらしいですよ。

その場のコマンドで起動できるのはもちろん、Mac用やWindows用にパッケージングできたりします。


さて、表題の件です。

新しく触るものということでまたまた情報収集して画面表示するところまで動かし、
パッケージングするところまで進めていることにします。
環境はこんな感じ

OS : macOS High Sierra
Electron : v1.8.4
Node.js : v10.0.0

最新に最新を重ねた状態(2018/04/26当時)ですね。
また、Electron、Packagerはプロジェクトフォルダに -D コマンドを使用してローカル環境として動くようにしています。

cd プロジェクトフォルダまでのパス(npm init とかで作ったpackage.jsonがあるところ)
npm i -D electron
npm i -D electron-packager

で、他のElectron環境構築記事でも見られるのと同じようにmain.js、index.htmlも書き、
実際に起動コマンドを叩いてHello Worldなりが表示されたのも確認しました。

npx electron .

いざMac用にパッケージング!

npx electron-packager . testApp --platform=darwin --arch=x64 --overwrite

CANNOT RUN WITH NODE 10.0.0
Electron Packager requires Node 4.0 or above.

!?
えーと、Nodeのバージョンが10.0.0では動きません。
Electron PackagerはNode4.0以上のバージョンを要求します?

???

そのまま訳すとこんな意味になっちゃいますけど
最新バージョンのNodeではPackagerを動かす互換性が無いってことですかね?
それともバージョン名を文字列比較しちゃって"4" > "10"がtrueになってるとかそんなんでしょうか?

とりあえずちょっとNodeのバージョン下げましょう。

nodebrew install v9.7.1  ← すでに同じバージョン入れてるなら不要
nodebrew use v9.7.1

自分の環境ではhomebrew経由でNode入れたのでこんなコマンドです。
新しく使うバージョン自体は適当です。もっと新しいものでも古いものでもいいかもしれません。
ただElectron1.8.4はNode8.2.1以上でないといけないみたいなのでその辺りは守りましょう。
nvmとか使っている人は別のコマンドになるのでご注意を。

念のためバージョン確認

node -v
v9.7.1

再トライ!

npx electron-packager . testApp --platform=darwin --arch=x64 --overwrite
Packaging app for platform darwin x64 using electron v1.8.4
Wrote new app to プロジェクトフォルダまでのパス/testApp-darwin-x64

できました!
Hello Worldを表示するだけなのにappファイルの容量が120MBとかいっちゃってます!
まぁnode_modulesフォルダも134MBとかいっちゃってるのが一つにまとまってると思えば
これくらいなのかもしれませんが・・・