electronアプリをビルドした際にめっちゃエラーが出た場合


環境

仮想環境のOS:Ubuntu
Electron 4.0.1
node v8.10.0

状況

環境的には、Reactの中にElectronモジュールを入れて開発みたいな感じです。
package.jsonで、プラットフォームをallにしていたため、たまにmacのアプリだけ生成されたり、何も生成されなかったり、たまたまwin,mac,linux3つとも生成されたりしたりしてしまっています。
以下、エラー内容です。

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] electron-build: `electron-packager build --platform=all --overwrite --asar`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] electron-build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
・
・
・

エラーの原因

エラー文を見た所、package.jsonの中のelectron-packagerあたりが原因であることがわかります。
windows向けのデスクトップアプリを生成するには、「wine」が必要で、allにするとMac向けのアプリは成功しますがwindows向けのアプリを生成する段階で失敗となりエラーがでる。
だから、全てのプラットフォームを指定すると、もしmac向けのアプリから生成が始まればmacだけのアプリが生成するし、windows向けのアプリから生成が始まれば、最初からエラーが出て何も生成されなくなるというわけです。
あぁ、だから、何も生成されない時と一個だけ生成される時があったのか、、、と納得しました。

解決方法

Wineを入れる方法はググれば出てきますが、
今回はやりません。
プラットフォームをMac向けだけに指定します。
次に、package.jsonの中のelectron-packagerのプラットフォーム指定の所をなんとかしました。

なので、私の場合はplatformをallにすると、エラーとなります。

package.json(エラーが出る方)
  "scripts": {
    "electron-build": "electron-packager build --platform=all --overwrite --asar",
  },

今回mac向けのアプリを生成したいので、platformの部分をdarwin(mac)と指定しました。

package.json(エラーなくなる方)
   "scripts": {
    "electron-build": "electron-packager build --platform=darwin --overwrite --asar",
  },

上記の記述なら、platformの部分に任意のプラットフォームを指定します。
なお、「all, darwin, linux, mas, win32」が指定可能です。

おそらく、windowsのアプリを生成するためにwine入れたりlinuxアプリを生成するための環境整えたりしたら、
platformをallにしても問題ないと思います。

感想

Electronすこ