npm 安装错误:"The build tools for v120 (Platform Toolset = 'v120') cannot be found"



在运行需要重新构建node-gyp的npm install时,抛出了以下构建错误:

MSB8020: v120的构建工具(平台工具集= 'v120')不能被发现。要使用v120构建工具进行构建,请安装v120构建工具。或者,您可以升级到当前的VisualStudio工具通过选择Project菜单或右键单击,然后选择"重新定位解决方案"

系统信息
  • Windows 10 (x64)
  • Visual Studio 2015
  • 节点v0.12.7
  • npm v2.11.3
  • node-gyp v2.0.1

br

使用msvs_version参数:npm install --msvs_version=2015

如果msvs_version参数不工作怎么办?

如果msvs_version参数不起作用,可能是因为您没有安装Visual c++ 2015构建环境。

安装Visual c++ Build Environment

选项1:Visual Studio 2015

  1. 在VS2015安装过程中,选择"Custom"。或者,如果你已经安装了VS2015,进入Windows的"卸载或更改程序">从列表中选择VS2015>单击"更改">单击"修改"
  2. 在"编程语言">"Visual c++"下勾选"Visual c++ 2015通用工具"选项
  3. 完成VS2015安装

选项2:Visual c++ Build Tools 2015

作为VS2015的替代品,您可以安装Microsoft发布的Visual c++ Build Tools 2015:

  1. vc++安装时,选择"Custom"
  2. 检查"Windows 8.1 SDK"one_answers"Windows 10 SDK"选项
  3. 完成vc++安装

使用msvs_version

现在已经安装了Visual c++ 2015构建环境,你可以通过msvs_version参数告诉npm使用它:

    开放PowerShell
  1. 使用msvs_version参数:npm install --msvs_version=2015

配置选项(非必需)

可选地,除了在命令提示符中指定msvs_version,你可以通过将msvs_version参数添加到npmrc或package.json中来配置npm,使其始终包含msvs_version参数:

npmrc

打开PowerShell并运行npm config set msvs_version 2015,它将把这个参数添加到您的用户npmrc文件中。从此以后,每次作为该用户运行npm install时,将自动包含msvs_version=2015参数

可选地,如果你计划用不同的Windows帐户登录,你可以包括全局标志npm config set msvs_version 2015 --global,并且你希望这个设置适用于机器上的所有帐户

package.json

修改项目的包。Json文件包含:

"config": {
  "msvs_version": 2015
}

从此以后,每次运行npm install时,对于这个项目,msvs_version=2015参数将自动包含


文章修订

  1. 受Chuck关于v120工具集的评论启发,进一步调查后修改的步骤(感谢@ChuckWalbourn)
  2. 新增配置选项
  3. 新增vc++ Build Tools选项
  4. vc++ Build Tools官方发布链接

我想在2Toad的回答中添加评论,但是stackoverflow不允许我这样做。您可以使用以下命令全局设置msvs_version:

npm config set msvs_version 2015 --global

我将分享这个答案,因为其他修复都没有解决我的问题。我有同样的错误,但设置了msvs参数:

npm install --msvs_version=2015

不能解决问题。无论我做什么,我都能看到它在工具集的错误位置。

长话短说,我了解到MSBuild现在打包在Visual Studio中,而不再打包在。net中。果然,我在PATH变量中有了这个条目:

C:WindowsMicrosoft.NETFrameworkv4.0.30319;

,因此调用了错误(旧)版本的MSBuild。我删除了这个条目,并添加了以下与VS2015相关的路径:

C:Program Files (x86)MSBuild14.0Bin

解决问题。

我已经花了2天时间安装了所有的VS版本…

npm install oracledb --msvs_version=2015

返回所有错误:

[..]node-gyp6.9.1includenodev8.h(18): fatal error C1083[..]
使用

npm install oracledb --msvs_version=2013

返回大量警告,编译后不能正常工作。

[..]warning C4995: 'v8::Value::ToUint32'[..]

这是我使用npm模块时最糟糕的经历。真是浪费时间:/

将版本设置为2015对我没有帮助。尝试将其设置为2013:

npm config set msvs_version 2013

npm config set msvs_version 2015

最新更新