まくろぐ
更新: / 作成:

問題

プロキシ環境下で、Electron (9.0.5) をインストールしようとしたら、まぁいろいろとエラーになってハマりました。 どうも、node install.js の実行がうまくいっていないようです。

D:\sandbox> npm install electron --save-dev

> core-js@3.6.5 postinstall D:\sandbox\node_modules\core-js
> node -e "try{require('./postinstall')}catch(e){}"

> electron@9.0.5 postinstall D:\sandbox\node_modules\electron
> node install.js

RequestError: read ECONNRESET
    at ClientRequest.<anonymous> (D:\sandbox\node_modules\got\source\request-as-event-emitter.js:178:14)
    at Object.onceWrapper (events.js:422:26)
    at ClientRequest.emit (events.js:327:22)
    at ClientRequest.origin.emit (D:\sandbox\node_modules\@szmarczak\http-timer\source\index.js:37:11)
    at TLSSocket.socketErrorListener (_http_client.js:467:9)
    ...

ECONNRESET ってことはプロキシの設定かなぁと思ったけど、プロキシは npm config set proxy ... でちゃんとセットしているし、なんだろう。。。

解決方法

と調べていたら、下記の Electron のチュートリアルに書いてありました。

If you need to use an HTTP proxy, you need to set the ELECTRON_GET_USE_PROXY variable to any value, plus additional environment variables depending on your host system’s Node version.

なんと、 ELECTRON_GET_USE_PROXY などをセットしないといけないとのこと。 次のような感じでプロキシ設定したら、うまくインストールできました。

Windows の場合
$ set ELECTRON_GET_USE_PROXY=1
$ set GLOBAL_AGENT_HTTPS_PROXY=http://proxy.example.com:8080
$ npm install electron --save-dev

わかりにくい。。。

(おまけ)electron-builder の場合

ちなみに、Electron アプリの配布パッケージを作成するための electron-builder は、プロキシ設定として HTTPS_PROXY 環境変数を参照するようです。 プロキシ環境から実行するときは、これをセットして実行しないと必要なモジュールをダウンロードできずにエラーになります。

Windows の場合
$ set HTTPS_PROXY=http://proxy.example.com:8080
$ npx electron-builder --win --x64 --dir

関連記事

まくろぐ
サイトマップまくへのメッセージ