Help us understand the problem. What is going on with this article?

Windows10でsocket.ioインストールエラー

More than 3 years have passed since last update.

Windows10にOSあげて、クリーンインストールしたので開発環境を再構築したところ、
思った以上に手間取ったのでメモ

環境

  • Windows10
  • node v0.12.7
  • npm 2.11.3
  • express 4.13.3
  • socket.io 1.3.6

やったこと

1.socket.io以外をインストール

nodeとnpm,expressをインストール。ここまでは順調なので割愛

2. socket.ioをインストール

npm install socket.ioをコマンドプロンプトから実行

2.1 python2.7がないのでconfigrator動かないと怒られる

→黙ってインストール

2.2 node-gyp rebuildが実行されるもエラー

MSBUILDできないとか怒られるので
VisualStudio2015も出たことだし2015インストールすればいっかと思いインストール
↑これがよくなかった

2.3 warning MSB8003: Could not find WindowsSDKDir variable from the registry.と表示され後処理でエラー

C:\Users*\hoge\node_modules\socket.io\node_modules\engine
.io\node_modules\ws\node_modules\utf-8-validate>if not defined npm_config_node_g
yp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\....\node_
modules\node-gyp\bin\node-gyp.js" rebuild ) else (node rebuild )
このソリューション内のプロジェクトを 1 度に 1 つずつビルドします。並行ビルドを有
効にするには、"/m" スイッチを追加してください。
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targe
ts(366,5): warning MSB8003: Could not find WindowsSDKDir variable from the regi
stry. TargetFrameworkVersion or PlatformToolset may be set to an invalid versi
on number. [C:\Users*\hoge\node_modules\socket.io\node_m
odules\engine.io\node_modules\ws\node_modules\utf-8-validate\build\validation.v
cxproj]
TRACKER : error TRK0005: 検索できませんでした: "CL.exe"。指定されたファイルが見
つかりません。 [C:\Users*\hoge\node_modules\socket.io\node_modules\engine.io\node_mod
ules\ws\node_modules\utf-8-validate\build\validation.vcxproj]
\

gyp ERR! build error
stack Error: C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe failed with
exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\
npm\node_modules\node-gyp\lib\build.js:269:23)
gyp ERR! stack at ChildProcess.emit (events.js:110:17)
gyp ERR! stack at Process.ChildProcess.handle.onexit (child_process.js:1074
:12)
ERR! System Windows_NT 6.3.9600
gyp ERR! command "node" "C:\Program Files\nodejs\node_modules\npm\node_modu
les\node-gyp\bin\node-gyp.js" "rebuild"
ERR! cwd C:\Users*\hoge\node
modules\socket.io\node_modul
es\engine.io\node_modules\ws\node_modules\utf-8-validate
gyp ERR! node -v v0.12.7
gyp ERR! node-gyp -v v2.0.1
gyp ERR! not ok

ここに書いてるレジストリいじってみるも効果なし
https://github.com/nodejs/node-gyp/issues/555
→ここにnode-gyp v2.00以降ならVS2015でもいけるみたいなこと書いてたけどbuild失敗

2.4 結論はVisualStudio2012インストール

nodeのバージョンの整合探すのに疲れたので、目先の改善策を模索・・・。
下記を参照させていただきました。
http://qiita.com/oahiroaki/items/b1a0cbea06c5ea140800
VS2015入れたのでVS2012入れたくなかったのですがインストールしてnpm installを再実行

C:\Users*\hoge> npm install socket.io --msvs_version=2012
utf-8-validate @1.1.0 install C:\Users*\hoge\node_module
s\socket.io\node_modules\engine.io\node_modules\ws\node_modules\utf-8-validate
node-gyp rebuild
C:\Users*\hoge\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\utf-8-validate>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\....\node_
modules\node-gyp\bin\node-gyp.js" rebuild ) else (node rebuild )
このソリューション内のプロジェクトを 1 度に 1 つずつビルドします。並行ビルドを有効にするには、"/m" スイッチを追加してください。
validation.cc
ライブラリ C:\Users*\hoge\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\utf-8-validate\build\Release\validation.lib とオブジェクト C:\Users*\hoge\node_modules\
socket .io\node_modules\engine.io\node_modules\ws\node_modules\utf-8-validate\build\
Release\validation.exp を作成中
コード生成しています。
コード生成が終了しました。
validation.vcxproj -> C:\Users*\hoge\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\utf-8-validate\build\Release\validation.node
/

build成功して無事インストール済みました。--msvs_version=2012がポイントですね。

結論としてはWindows10は何も悪くないということですね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした