Windowsでnode-gypのビルドを通す
npm install
したときにエラーが出るなと思ったら node-gyp とやらから出ているエラーだった。なんじゃないなこれと思って調べてみると Node.js native addon build tool とのこと。Ruby でもあったなーこういうの。確かにエラーが起きそうなところだ。
それから数時間…結構難儀したけれど、以下の作業を行ったら何とかビルドが完了するまでに至ったので、ここにメモしておく*1。併せて TooTallNate/node-gyp · GitHub も見てほしい。
環境・バージョン
- Windows 8.1 x64
- node-gyp 0.13.1
手順
Python のインストール
Python が必要らしい。Welcome to Python.org に Windows のインストーラーがあるのでこれを迷うことなくインストールする。バージョンは 2.7.3 を選ぶ。
Microsoft Visual Studio C++ 2012 for Windows Desktop のインストール
Visual Studio までインストールしなきゃいけないの?と思うけど、そういう前提条件となっているのでインストールする。ここからダウンロードできる。
ソースコードを修正する
どうやら node-gyp には、Windows のユーザー名に ASCII 以外の文字が入っているとエラーになってしまうバグがあるらしい。そして、そのバグは現在も修正されていない。
Problem with non-acsii userprofile name on Windows (7) · Issue #297 · TooTallNate/node-gyp · GitHub
なので、Windows のユーザー名に日本語などの文字を使っている場合は、仕方なくソースコードを修正してこれに対処する。対処策は以下のページで示されている。
日本語環境だと SHIFT_JIS なので以下のように変更。
# It has changed, write it if existing != xml_string: f = open(path, 'w') try: xml_string = xml_string.encode(encoding) except Exception: xml_string = unicode(xml_string, 'shift_jis').encode(encoding) f.write(xml_string) f.close()
--msvs_version=2012 オプションを付ける
npm install --msvs_version=2012
これを付けないと VS2010 だと無理ですよーと自分の環境では表示された*2。node-gyp コマンドを実行する際も同様のオプションがあるらしいけど、こっちは試してないのでうまくいくか不明。