質問: windows8.1環境で、node.js sailsを触っていました。 参考サイトを元に認証処理を実装していましたが、bcryptという認証モジュールがないため、npm install bcryptを実行しました(当方Git Shellを使用して、PowerShell上で作業を実行しています)。 最初はpythonがversion3.0超えだったためエラーでとまりました。 アンインストールし、pythonサイトから直接python2.7をダウンロード→インストールし、そこは解決しました。 また、node-gypもnpmでinstallしました。 ここまでで、エラー内容は変わったのですが、以前エラーです。 以下のサイト(英語)でも同様のエラーがでているとの報告がでていますが、 解決まで至っていない模様。Windows8環境では難しいのでしょうか? dockerでcentos環境を構築して、その中でやったほうが賢いでしょうかね。。。
回答: はじめまして。 エラーがわかりませんが、私の環境では最終的に以下の様になりインストールに成功したように見えます。 **追記** すみません、環境を書き忘れてました。 OSはWindows 8.1 pro, (powershellではなく)コマンドプロンプトから行いました。 ``` M:\bcrypt>npm list M:\bcrypt └─┬ bcrypt@0.8.0 ├── bindings@1.0.0 └── nan@1.3.0 ``` pythonとnpmのバージョンは以下の通りです。 ``` M:\bcrypt>python -V Python 2.7.8 M:\bcrypt>npm -v 1.4.28 ``` 途中でpython 2.7が求められたということで気になったのは、VCのバージョンはなんでしょうか? Windows上でpython 2.7モジュールのCのソースをコンパイルするにはVC 2008のコンパイラが必要になります。 現在ではMicrosoftから Microsoft Visual C++ Compiler for Python 2.7 が提供されていますので、pythonモジュールのCコンパイルが原因であれば、こちらを導入してみると結果が変わるかもしれません。 (あと私の環境にはVisual Studio 2013も入っています。) 以下はインストール時の全ログです。 ``` M:\bcrypt>npm install bcrypt \ > bcrypt@0.8.0 install M:\bcrypt\node_modules\bcrypt > node-gyp rebuild M:\bcrypt\node_modules\bcrypt>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild このソリューション内のプロジェクトを 1 度に 1 つずつビルドします。並行ビルドを有効にするには、"/m" スイッチを追加してください。 blowfish.cc bcrypt.cc bcrypt_node.cc ..\src\bcrypt.cc(232): warning C4267: '=' : 'size_t' から 'unsigned char' に変換しました。データが失われているかもしれません。 [M:\bcrypt\node_modules\bcrypt\bu ild\bcrypt_lib.vcxproj] C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xlocale(337): warning C4530: C++ 例外処理を使っていますが、アンワインド セマンティクスは有効には なりません。/EHsc を指定してください。 (..\src\ bcrypt_node.cc) [M:\bcrypt\node_modules\bcrypt\build\bcrypt_lib.vcxproj] M:\bcrypt\node_modules\bcrypt\node_modules\nan\nan.h(1221): warning C4267: '引数' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。 (.. \src\bcrypt_node.cc) [M:\bcry pt\node_modules\bcrypt\build\bcrypt_lib.vcxproj] M:\bcrypt\node_modules\bcrypt\node_modules\nan\nan.h(1247): warning C4267: '引数' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。 (.. \src\bcrypt_node.cc) [M:\bcry pt\node_modules\bcrypt\build\bcrypt_lib.vcxproj] ..\src\bcrypt_node.cc(106): warning C4244: '引数' : 'ssize_t' から 'unsigned char' への変換です。データが失われる可能性があります。 [M:\bcrypt\node_modules\bcry pt\build\bcrypt_lib.vcxproj ] ..\src\bcrypt_node.cc(167): warning C4244: '引数' : 'const ssize_t' から 'unsigned char' への変換です。データが失われる可能性があります。 [M:\bcrypt\node_module s\bcrypt\build\bcrypt_lib.v cxproj] ..\src\bcrypt_node.cc(261): warning C4267: '初期化中' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。 [M:\bcrypt\node_modules\bcrypt\ build\bcrypt_lib.vcxproj] ..\src\bcrypt_node.cc(262): warning C4267: '初期化中' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。 [M:\bcrypt\node_modules\bcrypt\ build\bcrypt_lib.vcxproj] C:\Users\UserName\.node-gyp\0.10.32\deps\v8\include\v8.h(179): warning C4506: インライン関数 'v8::Persistent v8::Persistent::New(v8::Han dle)' は定義されていません。 (..\src\bcrypt_node.cc) [M:\bcrypt\node_modules\bcrypt\build\bcrypt_lib.vcxproj] ライブラリ M:\bcrypt\node_modules\bcrypt\build\Release\bcrypt_lib.lib とオブジェクト M:\bcrypt\node_modules\bcrypt\build\Release\bcrypt_lib.exp を作成中 コード生成しています。 コード生成が終了しました。 bcrypt_lib.vcxproj -> M:\bcrypt\node_modules\bcrypt\build\Release\\bcrypt_lib.node bcrypt@0.8.0 node_modules\bcrypt ├── bindings@1.0.0 └── nan@1.3.0 M:\bcrypt> ```