web-dev-qa-db-ja.com

一部のパッケージ(sqlite3、socket.io)のnpmインストールがWindows 7でエラーMSB8020で失敗する

Visual Studio 2012(2010ではなく)を搭載したWindows 7マシンでnpm install socket.ioを使用してnode.jsパッケージ(特にsqlite3およびsocket.io)をインストールしようとすると、次のようなエラーが発生しました。

C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(35,5):エラーMSB8020:Visual Studio 2010のビルドツール(プラットフォームツールセット= 'v100 ') 見つからない。 v100ビルドツールを使用してビルドするには、[プロジェクト]メニューをクリックするか、ソリューションを右クリックして、[VC++プロジェクトの更新...]を選択します。 Visual Studio 2010をインストールして、Visual Studio 2010ビルドツールを使用してビルドします。

46
Gloopy

私のマシンでこれを回避するには、次のコマンドを実行してパッケージをインストールしました。

npm install socket.io --msvs_version=2012

Sqlite3のインストールで問題が発生し、socket.ioでも同様に機能したときに、答え here が見つかりました。

これらは問題を解決するためのより恒久的な解決策かもしれません:

  1. Visual Studio 2010をインストールする
  2. here および here に記載されているように、npm内部コピーを新しいバージョンのnode-gypに更新します長過ぎる)
83
Gloopy

もう1つのオプションは、msvs_versionを毎回指定する代わりに構成を変更することです。

npm config set msvs_version 2012
75
Pavel

Visual Studio Express 2013とVisual Studio Community 2015の両方がインストールされています。

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140') cannot be found. To build using the v140 build tools, please install v140 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Upgrade Solution...". [G:\work\cinema\node_modules\engine.io\node_modules\bufferutil\build\bufferutil.vcxproj]を取得していました

その理由は、 https://nodejs.org からダウンロードしたWindows用の最新のNode.jsには、古いnpm v2(および古いnode-gypその中npm v2)。

Node.jsの内部npmを更新する必要がありました(これもnode-gyp):

(open console as an administrator)
cd "C:\Program Files\nodejs"
npm install npm@latest

npm config set msvs_version 2013

動作するようになりました(当面はVS 2013を使用しているようです)

2
asdfasdfads

TL; DR

DO N'TインストールしたVisual Studioのバージョンにnode-gypを依存させたい場合(またはVSをインストールしていない場合)、windows-build-toolsをインストールします(以下を参照)。これにより、両方のエラーが解消され、インストールされているVisual Studioのバージョンをアップグレードする際の今後の問題を回避できます。

[〜#〜] do [〜#〜]インストールされているVisual Studioのバージョンにnode-gypを依存させたい場合は、npm config set msvs_version 2015を、2015の代わりにバージョンタグに置き換えます。有効なバージョンのタグは:201520142013110100


windows-build-toolsを使用した修正

node-gypインストール手順 ごとに、次のこともできます

[〜#〜] elevated [〜#〜]コマンドシェルからのnpm install --global --production windows-build-tools

これにより、node-gypで必要なstrictly Microsoft Visual C++ Build Tools(これはコンパイルのためにVisual Studioの代わりに使用されます)がインストールされ、msvs_versionがインストールされたバージョンに適切に設定されます。

インストール後、msvs_versionによって設定されたwindows-build-toolsがオーバーライドされていないことを確認する必要があります。 npm config listを実行すると、msvs_version; globalconfig C:\Users\Username\AppData\Roaming\npm\etc\npmrcの下に表示されます。そうでない場合は、windows-build-toolsで設定された値がオーバーライドされているため、オーバーライドされた値は削除する必要があります。 npm config delete msvs_versionはオーバーライドされた値を削除し、ビルドツールによって設定された値がグローバル構成セクションの下に表示されます。

0
Code Bling