web-dev-qa-db-ja.com

NPM-socket.IOをインストールできません

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」と表示され、何か関係があるのでしょうか。モジュールをグローバルにインストールする必要がありますか、ローカルにインストールする必要がありますか?

18
user2316341

Socket.IOの依存関係ツリーにあるパッケージの少なくとも1つは C/C++アドオン であり、インストール時にシステムでコンパイルする必要があります。また、依存関係であるため、インストールに失敗した場合もSocket.IOは実行されません。

システム間のコンパイルを有効にするために、Node.jsは node-gyp ビルドシステムとして。あなたはそれをグローバルパッケージとしてインストールする必要があります:

npm install -g node-gyp

同様に その依存関係がインストールされています 。要約版:

  • Python 2
  • C/C++コンパイラ/ビルドツール
    • Windowsの場合、Microsoft Visual Studio 2013(C++またはWindowsデスクトップ)(Expressエディション)
      • 64ビットの場合、Windows 7 64ビットSDKが必要な場合があります

次に、Socket.IOをローカルパッケージとしてインストールして、requireできるようにする必要があります。

npm install socket.io
35

Macでも同様の問題がありました。私の問題を解決したのは、少し古いバージョンのSocket.ioをインストールすることです。

やった:

npm install socket.io @ "〜0.8.1"

これにより、0.8.0〜0.8.9の最新バージョンがインストールされますが、0.9.0以上はインストールされません。

Socket.ioは完全にインストールされました。

15
Daniel

node-gypを実行するために必要なすべてのソフトウェアがあることを確認してください:

gypが使用するVisual Studioのバージョンを環境変数を介して構成できるため、--msvs_version=2012プロパティを設定する必要がなくなります。

例:

  • visual Studio 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コンパイラを同梱することもできるようにして、この問題を完全に修正できるようにします。

自由に投票してください:

7
Tony O'Hagan

コンパイルの失敗の原因となっている問題は、socket.ioに必要なengine.ioモジュールによってインストールされたwsモジュールが、nanのバックレベルバージョンをプルすることです。詳細は https://github.com/BrowserSync/grunt-browser-sync/issues/95 を参照してください。ビルド失敗後に問題を回避するには:

  • node_modules/socket.io/node_modules/engine.io/node_modules/wsに移動します
  • package.jsonを編集して、nanのリリースを1.4.xから1.6.0に変更します
  • コマンドの発行node-gyp rebuild

これで、socket.ioを使用できるようになります。

0
David Tootill

この問題は私をとても困らせます。私は多くの解決策を試しました。

.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_

インストールログにエラーはありません。

注:この解決策は機能しない可能性がありますが、私には有効です

0
hidmouth

別のアプローチは Docker for Windows を使用してNodeJS環境を起動することです。開発中は、NodeコードをDockerボリュームとしてマウントできるため、Windowsからコードを更新し続けますが、コードを実行し、依存関係をLinux VM内にインストールします。デプロイするときに、 NodeコードをDockerイメージにコピーして、デプロイするリリースイメージに焼き付けるDockerfile。

このアプローチは、コードのsocket.ioバージョンまたはその依存関係を変更する危険を冒したくない場合に必要になることがあります。

また、企業のイントラネットまたはパブリック/プライベートクラウドへの展開を計画している場合にも、これは貴重なソリューションになる可能性があります。

Dockerは、Windowsコンピュータの開発環境を妨害することなく、Nodeの異なるバージョンでのデプロイメントのテスト(NodeJS libのテストなど)にも非常に便利です。

0
Tony O'Hagan