2016-08-05 4 views
0

私は数日後にwin10にnode-protobufをインストールしようとしました。私はそれにどのようにいくつかのquides/readmesをたどってきましたが、成功はありません。今私はここにこだわっています:node.js windows10にnode-protobufをインストールします。

C:\rie>npm install node-protobuf 
/
> [email protected] install C:\rie\node_modules\node-protobuf 
> node-gyp rebuild 


C:\rie\node_modules\node-protobuf>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) 
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch. 
    init.cpp 
    native.cpp 
    parse.cpp 
    serialize.cpp 
c:\rie\node_modules\node-protobuf\src\common.h(11): fatal error C1083: Cannot open include file: 'google/protobuf/descriptor.h': No suc 
h file or directory (compiling source file ..\src\native.cpp) [C:\rie\node_modules\node-protobuf\build\protobuf.vcxproj] 
c:\rie\node_modules\node-protobuf\src\common.h(11): fatal error C1083: Cannot open include file: 'google/protobuf/descriptor.h': No suc 
h file or directory (compiling source file ..\src\serialize.cpp) [C:\rie\node_modules\node-protobuf\build\protobuf.vcxproj] 
c:\rie\node_modules\node-protobuf\src\common.h(11): fatal error C1083: Cannot open include file: 'google/protobuf/descriptor.h': No suc 
h file or directory (compiling source file ..\src\parse.cpp) [C:\rie\node_modules\node-protobuf\build\protobuf.vcxproj] 
c:\rie\node_modules\node-protobuf\src\common.h(11): fatal error C1083: Cannot open include file: 'google/protobuf/descriptor.h': No suc 
h file or directory (compiling source file ..\src\init.cpp) [C:\rie\node_modules\node-protobuf\build\protobuf.vcxproj] 
gyp ERR! build error 
gyp ERR! 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:276:23) 
gyp ERR! stack  at emitTwo (events.js:87:13) 
gyp ERR! stack  at ChildProcess.emit (events.js:172:7) 
gyp ERR! stack  at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) 
gyp ERR! System Windows_NT 10.0.10586 
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" 
gyp ERR! cwd C:\rie\node_modules\node-protobuf 
gyp ERR! node -v v4.4.5 
gyp ERR! node-gyp -v v3.3.1 
gyp ERR! not ok 
npm ERR! Windows_NT 10.0.10586 
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "node-protobuf" 
npm ERR! node v4.4.5 
npm ERR! npm v2.15.5 
npm ERR! code ELIFECYCLE 

npm ERR! [email protected] install: `node-gyp rebuild` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'. 

センソスでは問題ありません。

答えて

0

このパッケージをインストールするには、ドキュメントをよく読んでいないと思いますが、最後にはいくつかのツールと設定が必要です。

まずMicrosoft Visual C++ 2010を入手する必要があります.Expressは問題ありませんが、SP1をインストールする場合は、ここからx64コンパイラを再インストールする必要があります。 Windows用のNode.jsディストリビューションには既にnode-gypツールが含まれているため、心配する必要はありません。 VC++ 2012/2013は、Node.jsのインストールと互換性のあるコンパイラ・バージョン(64の場合64、32の場合32)があれば動作します。 Windows上のネイティブモジュールをコンパイルする際の問題については、node-gypリポジトリを参照してください。

次に、libprotobufをコンパイルします。 Googleから入手し、vsprojects/protobuf.slnを開き、OSのバージョンに合わせてコンパイルしてください。 Windows 64では、システム上でNode.jsが64ビットであるため、64ビットライブラリをコンパイルする必要があります。デフォルトでは32ビットのターゲットしかないので、手動で64ビットを追加する必要があります。 libprotobufプロジェクトのプロパティを開き、CRTをマルチスレッド(DLLではなく)に設定します。 libprotobufリリースをコンパイルします。

次に、vsprojects/extract-includes.batを実行すると、vsprojects/includeに必要なヘッダーがコピーされます。

libprotobufファイルを配置するフォルダを指すLIBPROTOBUF環境変数を作成します。コマンドラインプロンプトからSET LIBPROTOBUF = pathを使うか、RapidEEのようなツールを使うことができます。 libprotobuf.libを$(LIBPROTOBUF)/ libに置き、ファイルを$(LIBPROTOBUF)/ includeにインクルードします。あなたは終わった。

これでnpm install node-protobufをインストールするだけで問題ありません。それでも上記のすべてを確認して、その後、問題に直面して

がインストールおよび実行され、その後、あなたのインターネット接続は、一度ご確認ください。..

+0

私が思うに、MS-ツールはOKです。私はMS Visual C++ビルドツールを "npm install --global --production windows-build-tools"でインストールしました。問題はおそらく "libprotobufをコンパイルする"ことです。私はそれを見つけることができますが、それをどのようにコンパイルするのですか? – ajlind