Windows
Node.js
YARN
windows-build-tools

Yarn で windows-build-tools がインストールできなかった

Node.js でビルドとか Sass とか動かそうとすると Windows にないコマンドを使っているため実行できないことが多々あり、解消するために windows-build-tools というものがあるのですが、これがどうにもこうにも yarn でインストールできなかったので、インストールできた時の対処法を備忘録として残しておきます。

現象

兎にも角にも下記のような画面になり、yarn global add windows-build-tools が途中でハングアップしてしまいます。
2019-01-08.png

回避策

調査方法は後述するとしてインストールできた手順を示します。

方法(い)

  • %USERPROFILE%\.windows-build-tools フォルダを削除する。
  • Python27 を削除する。
    • Windows の アプリと機能 からアンイストールする。
    • Python27 がインストールされていたフォルダを探して削除する。(C:\Python27 など)
  • yarn global add windows-build-toolscmd.exe もしくは PowerShell.exe で再実行する。

方法(ろ)

  • Python2.7 をインストールする。
  • Visual Studio Build Tools 2017 を下記を含む構成でインストールする。
    • デスクトップ用VC++ 2015.3 v14.00(v140)ツールセット(必須)
    • Node.js ビルドツール (多分必須)
  • yarn のコンフィグを設定する。
$ yarn config python "C:\\python27\\python.exe" -g
$ yarn config msvs_version 2017 -g
  • yarn global add windows-build-toolscmd.exe もしくは PowerShell.exe で再実行する。

調査

回避策を見つけるまでの軌跡です。

ハングアップしたところで何が起きているのか見るために --verbose--debug を追加してみる。
→ 特に追記された情報もなく再びハングアップする。

本家 の issue を覗いて見る。
→ 下記の投稿を発見する。
https://github.com/felixrieseberg/windows-build-tools/issues/154

npm install --global windows-build-tools を試してみる。
Python 2.7.10 is already installed, not installing again. でハングアップする。
→ バグなので Python を削除せよという記事を見つける。
https://github.com/felixrieseberg/windows-build-tools/issues/147

再び npm install --global windows-build-tools を試してみる。
→ 今度は Successfully installed Python 2.7 でハングアップする。
→ バグなので %USERPROFILE%\.windows-build-tools を削除せよという記事を見つける。
http://m-miya.blog.jp/archives/1071590052.html
https://github.com/felixrieseberg/windows-build-tools/issues/33

再び npm install --global windows-build-tools を試してみる。
→ インストールが完了する。

npm ではなく yarn でインストールしたいので上記、回避手順を実行してみる。
→ 無事、yarn でインストールが完了する。


再発し、過去の手順では上手く行かなかったので、再度調査をしました。

windows-build-tools を使わない手動インストールの方法(有名)を再度試す。
https://github.com/Microsoft/nodejs-guidelines/blob/master/windows-environment.md#prerequisites

本来インストールしたいツールを yarn global add xxx でインストールする。
→ 依存関係解決のため windows-build-tool インストールが実行されてしまい、下記の状態でハングアップする。

---------- Visual Studio Build Tools ----------
Still waiting for installer log file...
------------------- Python -------------------
Successfully installed Python 2.7

うーん…と思いつつ、上記の手動インストールがあるページに、下記と書かれていることを見つける。

Option 1: Install all the required tools and configurations using Microsoft's windows-build-tools by running npm install -g windows-build-tools from an elevated PowerShell (run as Administrator).

いちかばちか、愛用の Msys2 ターミナルではなく、PowerShellyarn global add windows-build-tools を実行する。
→ 無事、yarn でインストールが完了する。

所管

ハングアップの詳細が解ってから調査が捗ったのでログは大事だと痛感しました。
yarn でログを出す方法を学ばなければと思いました。

以上