NodeJSサーバーで使用するために、npmを使用してWindowsにsocket.ioをインストールしようとしています。
まず、「npm install socket.IO」と入力すると、ログにpython and node-gyp。と表示されます。インストールしましたpython 2.7 .3および環境変数を設定します。
今、私は新しいエラーを受け取りました、それはビジュアルスタジオと関係がある(VSがnpmと関係があるのは一体何ですか?それはコンパイラーについてですか?)。
エラーはここと同じです 一部のパッケージ(sqlite3、socket.io)のnpmインストールは、Windows 7のエラーMSB8020で失敗します しかし、エラーの代わりにオプションを使用すると、何かがわかりますデータ損失の可能性(c4267)についてはエラーを記録しません。
次に、アプリを起動すると、モジュールsocket.ioがまだ見つからないというメッセージが表示されます。
また、npm config get rootを実行すると、「undefined」と表示され、何か関係があるのでしょうか。モジュールをグローバルにインストールする必要がありますか、ローカルにインストールする必要がありますか?
Socket.IOの依存関係ツリーにあるパッケージの少なくとも1つは C/C++アドオン であり、インストール時にシステムでコンパイルする必要があります。また、依存関係であるため、インストールに失敗した場合もSocket.IOは実行されません。
システム間のコンパイルを有効にするために、Node.jsは node-gyp
ビルドシステムとして。あなたはそれをグローバルパッケージとしてインストールする必要があります:
npm install -g node-gyp
同様に その依存関係がインストールされています 。要約版:
次に、Socket.IOをローカルパッケージとしてインストールして、require
できるようにする必要があります。
npm install socket.io
Macでも同様の問題がありました。私の問題を解決したのは、少し古いバージョンのSocket.ioをインストールすることです。
やった:
npm install socket.io @ "〜0.8.1"
これにより、0.8.0〜0.8.9の最新バージョンがインストールされますが、0.9.0以上はインストールされません。
Socket.ioは完全にインストールされました。
node-gyp
を実行するために必要なすべてのソフトウェアがあることを確認してください:
gyp
が使用するVisual Studioのバージョンを環境変数を介して構成できるため、--msvs_version=2012
プロパティを設定する必要がなくなります。
例:
GYP_MSVS_VERSION=2012
を設定GYP_MSVS_VERSION=2013e
(「e」は「特急版」を表します)完全なリストについては、- https://github.com/joyent/node/blob/v0.10.29/tools/gyp/pylib/gyp/MSVSVersion.py#L209-294 を参照してください
これは、NodeJSのWindowsユーザーにとっては依然として苦痛です。これは、Visual Studioのコピーがインストールされていることを前提としているため、多くのエンドユーザーがこれを使用することはないためです。そこで、Joyentにロビーコアの一部としてWebソケットを含めるよう促し、NodeJSインストールの一部としてGNU gccコンパイラを同梱することもできるようにして、この問題を完全に修正できるようにします。
自由に投票してください:
コンパイルの失敗の原因となっている問題は、socket.ioに必要なengine.ioモジュールによってインストールされたwsモジュールが、nanのバックレベルバージョンをプルすることです。詳細は https://github.com/BrowserSync/grunt-browser-sync/issues/95 を参照してください。ビルド失敗後に問題を回避するには:
これで、socket.ioを使用できるようになります。
この問題は私をとても困らせます。私は多くの解決策を試しました。
.NET Framework 2.0 SDKをインストールしました。
インストールしましたPython 2.7.x
VS 2012 Expressをインストールしました
パスを設定しました
引数--msvs_version=2010(or 2012/2013..)
...を指定して_npm install xxx
_を実行しました.
しかし、すべてが失敗しました。
最後に、私はアンインストールしましたPython&.NET Framework 2.0 SDK&VS 2012、それらのパスをクリアしますWindows Updateを有効にし、すべての重要なアップデートをインストールし、コンピューターを再起動します
次に、以下のコマンドを実行します:_npm install node-gyp -g npm install socket.io -g npm install browser-sync -g
_
インストールログにエラーはありません。
注:この解決策は機能しない可能性がありますが、私には有効です
別のアプローチは Docker for Windows を使用してNodeJS環境を起動することです。開発中は、NodeコードをDockerボリュームとしてマウントできるため、Windowsからコードを更新し続けますが、コードを実行し、依存関係をLinux VM内にインストールします。デプロイするときに、 NodeコードをDockerイメージにコピーして、デプロイするリリースイメージに焼き付けるDockerfile。
このアプローチは、コードのsocket.ioバージョンまたはその依存関係を変更する危険を冒したくない場合に必要になることがあります。
また、企業のイントラネットまたはパブリック/プライベートクラウドへの展開を計画している場合にも、これは貴重なソリューションになる可能性があります。
Dockerは、Windowsコンピュータの開発環境を妨害することなく、Nodeの異なるバージョンでのデプロイメントのテスト(NodeJS libのテストなど)にも非常に便利です。