npm安装错误:"无法找到v120(平台工具集=' v120')的构建工具"

时间:2015-09-14 01:48:37

标签: msbuild npm visual-studio-2015 windows-10 node-gyp

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

  

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

系统信息

  • Windows 10(x64)
  • Visual Studio 2015
  • node v0.12.7
  • npm v2.11.3
  • node-gyp v2.0.1

5 个答案:

答案 0 :(得分:44)

TL;博士

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

如果msvs_version参数不起作用怎么办?

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

安装Visual C ++构建环境

选项1:Visual Studio 2015

  1. 在VS2015安装过程中,选择" Custom"。或者,如果您已经安装了VS2015,请转到Windows' "卸载或更改程序" >从列表中选择VS2015>点击"更改" >点击"修改"
  2. 检查" Visual C ++ 2015常用工具"选项,"编程语言" > " Visual C ++"
  3. 完成VS2015安装
  4. 选项2:Visual C ++ Build Tools 2015

    作为VS2015的替代方案,您可以安装Microsoft发布的Visual C++ Build Tools 2015

    1. 在VC ++安装过程中,选择"自定义"
    2. 检查" Windows 8.1 SDK"和" Windows 10 SDK"选项
    3. 完成VC ++安装
    4. 使用msvs_version

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

      1. 打开PowerShell
      2. 使用msvs_version参数:npm install --msvs_version=2015
      3. 配置选项(不需要)

        可选地,您可以将npm配置为始终包含msvs_version参数,而不是在命令提示符处指定msvs_version,方法是将其添加到npmrc或package.json中:

        <强> npmrc

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

          

        如果您计划使用不同的Windows帐户登录,并且希望此设置适用于计算机上的所有帐户,则可以选择包含全局标记npm config set msvs_version 2015 --global

        <强>的package.json

        修改项目的package.json文件以包含:

        "config": {
          "msvs_version": 2015
        }
        

        此后,每次运行npm install时,对于此项目,msvs_version=2015 param将自动包含在内

        文章修订

        1. 经过Chuck关于v120工具集的评论启发后进一步调查的步骤(感谢@ChuckWalbourn)
        2. 添加了配置选项
        3. 添加了VC ++ Build Tools选项
        4. 更新了正式版本的VC ++ Build Tools链接

答案 1 :(得分:4)

我想在2Toad的答案中添加注释,但stackoverflow不允许我。 您可以使用以下命令全局设置msvs_version:

npm config set msvs_version 2015 --global

这可以节省您将它放在每个项目配置对象中。

答案 2 :(得分:2)

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

$state.go(state)

没有解决问题。无论我做了什么,我都能看到它正在寻找工具集的错误位置。

长话短说我了解到MSBuild现在已与Visual Studio打包在一起,不再与.NET打包在一起。果然我在PATH变量中有这个条目:

npm install --msvs_version=2015

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

C:\Windows\Microsoft.NET\Framework\v4.0.30319;

问题解决了。

答案 3 :(得分:1)

我已经花了2天安装所有VS版本......

npm install oracledb --msvs_version=2015

返回所有错误:

[..]node-gyp\6.9.1\include\node\v8.h(18): fatal error C1083[..]

使用

npm install oracledb --msvs_version=2013

返回很多警告,编译但在之后无法正常工作。

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

这是我有史以来最糟糕的npm模块体验。多么浪费时间:/

答案 4 :(得分:0)

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

npm config set msvs_version 2013

npm config set msvs_version 2015