node.js-Windows 7上某些软件包(sqlite3,socket.io)的npm安装失败,错误为MSB8020

当尝试在装有Visual Studio 2012(而不是2010)的Windows 7计算机上使用npm install socket.io安装某些node.js程序包(尤其是sqlite3和socket.io)时,出现一些类似以下的故障:

C:\ Program档案 (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构建工具进行构建。

4个解决方案
83 votes

为了在我的机器上解决这个问题,我执行了以下命令来安装软件包:

npm install socket.io --msvs_version=2012

在安装sqlite3时遇到问题时,我在这里找到了答案,它也与socket.io一起工作。

这些可能是解决问题的更永久的解决方案:

  1. 安装Visual Studio 2010
  2. 如此处和此处所述,将npm内部副本更新为新版本的node-gyp(可能是更好的选择,尽管我没有使它工作,但没有尝试太久)
Gloopy answered 2020-06-27T13:41:55Z
75 votes

另一个选择是更改配置,而不是每次都指定msvs_version:

npm config set msvs_version 2012
Pavel answered 2020-06-27T13:42:16Z
2 votes

我同时安装了Visual Studio Express 2013和Visual Studio Community 2015。

我正在npm

原因是从[https://nodejs.org]下载的Windows的最新Node.js包含旧的npm v2(以及npm v2中的旧node-gyp)。

我必须更新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)

asdfasdfads answered 2020-06-27T13:42:55Z
0 votes

TL; DR

如果您不希望msvs_version依赖于已安装的Visual Studio版本(或未安装VS),请安装windows-build-tools(请参见下文)。 这将消除错误,并且在升级安装的Visual Studio版本时应避免将来出现问题。

如果您确实希望msvs_version依赖于已安装的Visual Studio版本,则应替换npm config list的版本标签,代替npm config list。有效的版本标签为:msvs_version,; globalconfig C:\Users\Username\AppData\Roaming\npm\etc\npmrc,windows-build-tools,npm config delete msvs_version,100


使用msvs_version进行固定

按照node-gyp安装说明,您还可以执行

来自ELEVATED命令外壳的msvs_version

这将严格安装msvs_version所需的Microsoft Visual C ++ Build Tools(将代替Visual Studio进行编译),并将windows-build-tools设置为刚安装的版本。

安装后,应检查是否已覆盖windows-build-tools设置的msvs_version。 执行npm config list时,msvs_version应该出现在; globalconfig C:\Users\Username\AppData\Roaming\npm\etc\npmrc下; 否则,将覆盖windows-build-tools设置的值,并应删除覆盖的值。 npm config delete msvs_version应该删除覆盖的值,并且构建工具所设置的值应该出现在global config部分下。

Code Bling answered 2020-06-27T13:43:48Z
translate from https://stackoverflow.com:/questions/14180012/npm-install-for-some-packages-sqlite3-socket-io-fail-with-error-msb8020-on-wi