Windows で node-gyp(npm) が動かないとき公式を確認する

node.js のロゴ。

Mac / Linux 環境であれば node-gype やそれを使うモジュールが素直に動いてくれますが、Windows 環境では動かないことが良くあるようです。

npm を実行して package.json に定義したモジュールなどをインストールしようとするとき、node-gyp が動きません(コンパイルできません)、 という趣旨のエラーが発生します。私の場合は bcrypt ~などが動きませんでした。

公式に対応するための資料があるので、公式の資料を参照するのが良いでしょう。 概ね必要な物をインストールして再起動し、node-gyp がコンパイルされるようにする必要があります。

公式の資料に Win 版導入手順アリ

node-gyp - GitHub(公式)

公式の資料に概ね手順が書いてあります。ここではそれをサラッと要約します。

node-gyp は Python を必要としています。Python のバージョンに注意しょう。

執筆時時点(2016/04/18)では、Python は 2.7.x~ と 3.x.x の 2 種類がリリースされていますが、node-gyp は 2.7.x~ のみをサポートします。 また Python が実行できるように環境変数(環境パス)が設定しておくのが良いと思います。

Python の環境パスを設定しないとき、npm や node-gyp で python オプションを使うことで解決できます。公式を参照して下さい。 また、複数のバージョンの Python がインストールされている場合の対応方法も公式に示されています。

さらに Windows7,8 と Windows 10 とでインストールするソフトウェアが変わります。 Windows7,8 では VisualStudio C++2013、Windows10 では、VisualStudio2015 が必要です。

ただし、VisualStudio Community などインストールするコンポーネントが選択できるタイプのソフトウェアは、 C++に関するコンポーネントを必ずインストールするようにします。おそらく C++ コンパイラだけでも動作すると思いますが、検証していません。

Windows10 では、GYP_MSVS_VERSION=2015を環境変数として設定します。

64bit の場合

どのバージョンの Windows であっても、OS が 64bit の場合には、Windows7 64-bit SDK をインストールします。

CL.exe が見つからない

CL.exe が見つからないとき、ほとんどの場合に、C++ コンパイラが見つかっていない、と言うことです。 VisualStudio をインストールしましょう。C++ に関連するコンポーネント、特に C++ コンパイラをインストールする必要があります。