Infinite Kayrlas

メカをまとって空を飛ぶ

Visual Studio CodeがOfflineでlaunchしない問題を真剣に考える

懐が寂しくなりがちな学生ならばモバイルWi-Fiを契約できず,出先のPC作業でオフラインになる*1こともしばしば.そんな時にエディタが起動しなかったら...?悲劇...?
宗派を超えて人々を魅了するエディタ,Visual Stduio Code(VSCode)*2VSCodeでその悲劇が起きたので対処方法と一緒にまとめた.Sublime Textではこんなことなかったのに*3

 

(2019-08-02 追記)

この問題は既に解決済みで以下の内容は古いものです.追記を新しく書きましたのでこちらをご覧ください.

kayrlas.hatenablog.com

 

環境

現象

PCがオフラインの時,デスクトップやタスクバー上のショートカットから

C:\Users\(ユーザ名)\AppData\Local\Programs\Microsoft VS Code\Code.exe

を実行する操作を行っても起動しない.タスクマネージャーを見るとプロセスに出現していないことが分かる.機内モードでも同様の現象を確認できる.直後,オンラインして実行すると正常に起動する.
起動している状態でオフラインにし,別のウィンドウで新規に実行しようとすると失敗する.起動している状態でオフラインにし,フォルダを開こうとするとタスクには残るがウィンドウは真っ黒になってしまう.

検証

既出の問題か調べる

VSCode オフライン 起動しない」等のキーワードでGoogleに尋ねてみた.日本語で検索して上位に出てきたのは「オフラインインストール」や「ポータブル化」だった.この問題とは関係がなさそう.レジストリディレクトリ権限が悪さをする場合もあるようだが,これらが原因ならばオンラインでも起動できないはずなので除外する.

レジストリが原因の場合:
teratail.com

ディレクトリ権限が原因の場合:
tyablog.net

ログを出力する

調べを進めるとコマンドプロンプトから

code --verbose

と実行するとログが出力されることが分かった.オンラインの状態で実行すると設定ファイルを読み,拡張機能のアップデート等を確認してから正常に起動するようだが,オフラインの状態で実行すると

dns.js:246
this._handle = new ChannelWrap();
^
Error: EFILE
at new Resolver (dns.js:246:20)
at dns.js:377:25
at dns.js:431:3
at NativeModule.compile (bootstrap_node.js:606:7)
at NativeModule.require (bootstrap_node.js:550:18)
at net.js:45:13
at net.js:1730:3
at NativeModule.compile (bootstrap_node.js:606:7)
at NativeModule.require (bootstrap_node.js:550:18)
at internal/child_process.js:6:13

と出力されて強制終了する.バージョン情報を表示するコマンド

code --version

でも同じ表示が出力されることから,codeはインターネット接続を必要とするコマンドで,オフラインではコマンド自体が効かなくなる,との仮説が立てられる.

本家本元を辿る

VSCodeソースコードGitHubで公開されている.この問題については度々Issuesで報告されているようだ.
github.com

同様のIssuesはWindows 10 October 2018 Update以後も頻繁に報告されているが,殆どが2016年6月12日(JST)から始まる#7570にduplicateされている.当時のバージョンは1.2.0.根強い問題であることが伺える.辿っていくと途中でAtomのDiscussElectronのIssuesにも飛び火している.

まずはAtomが起動しなくなった時の対処方法を試した.以下の記事を参考に

  • セーフモードで起動
  • キャッシュファイルを削除して起動
  • 拡張機能を全て削除して起動

の3つを行ったが,全て起動しなかった.tadtadya.com

#7570に戻ってみたところ,オレンジアイコンのExploration Buildを試す記述と緑アイコンのInsider Buildを試す記述を発見した.2019年1月9日(JST)時点ではExploration Buildをダウンロードする公式ページはない.MicrosoftBenjamin Paseroさんが貼られたリンクからバージョン1.28.0をダウンロード,インストール,起動後,最新バージョンに更新した.オフラインにして実行すると無事起動することができた.Insider BuildはVSCodeの公式ページから最新バージョンをダウンロードできる.同様にオフラインで実行すると無事起動した.どちらのBuildもエディタとして正常に機能しているようだ.

まとめ

2019年1月9日(JST)時点で最新のバージョン1.30.2において,青アイコンのVisual Studio Code Stable Buildはオフラインで起動しないことがある.対処方法としてはExploration BuildまたはInsider Buildを使用することが挙げられるが,動作が安定しているとは限らない.

おまけ

VSCodeが使用するフォルダとして以下の4つがある.

  • C:\Users\<ユーザー名>\.vscode
  • C:\Users\<ユーザー名>\AppData\Roaming\Code
  • C:\Users\<ユーザー名>\AppData\Roaming\Visual Studio Code
  • C:\Users\<ユーザー名>\AppData\Local\Programs\Microsoft VS Code

Exploration Build,Insider Buildをインストールしてもそれぞれ別のフォルダが作成されるので,共存できる模様.いま私のPCには3種類のVSCodeが入っている.

*1:スマホテザリングするのは無しにしよう,月末で通信容量ギリギリのシチュエーション

*2:要出典

*3:この時点でVSCode以外のエディタはインストールされていない状況を考えよう