45

当尝试npm install socket.io在我的 Windows 7 机器上使用 Visual Studio 2012(而不是 2010)安装一些 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 的构建工具(Platform Toolset = 'v100 ') 找不到。要使用 v100 构建工具进行构建,请单击“项目”菜单或右键单击解决方案,然后选择“更新 VC++ 项目...”。安装 Visual Studio 2010 以使用 Visual Studio 2010 构建工具进行构建。

4

4 回答 4

83

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

npm install socket.io --msvs_version=2012

我在安装 sqlite3 时遇到问题时在这里找到了答案,它也适用于 socket.io。

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

  1. 安装 Visual Studio 2010
  2. 将 npm 内部副本更新为更新版本的 node-gyp,如此此处所述(可能是更好的选择,尽管我没有让它工作但没有尝试太久)
于 2013-01-06T06:44:57.560 回答
75

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

npm config set msvs_version 2012
于 2014-03-01T22:03:38.580 回答
2

我安装了 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包含旧的npmv2(并且node-gyp在该npmv2 中是旧的)。

我不得不更新 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)

于 2015-10-16T21:15:32.227 回答
0

TL;博士

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

如果您确实node-gyp依赖于已安装的 Visual Studio 版本,则npm config set msvs_version 2015用您的版本标记替换2015. 有效的版本标签是:2015, 2014, 2013, 110,100


修复使用windows-build-tools

根据node-gyp 安装说明,您也可以这样做

npm install --global --production windows-build-toolsELEVATED命令外壳

这将严格安装所需的 Microsoft Visual C++ 构建工具(这将用于代替 Visual Studio 进行编译)node-gyp,并适当地设置msvs_version为刚刚安装的版本。

安装后,您应该检查msvs_versionset bywindows-build-tools是否未被覆盖。执行时npm config listmsvs_version应出现在; globalconfig C:\Users\Username\AppData\Roaming\npm\etc\npmrc; 如果不是,则设置的值windows-build-tools已被覆盖,应删除覆盖的值。npm config delete msvs_version应该删除覆盖的值,构建工具设置的值应该出现在全局配置部分下。

于 2016-10-29T18:02:19.690 回答