【问题标题】:npm install error: "The build tools for v120 (Platform Toolset = 'v120') cannot be found"npm 安装错误:“找不到 v120(平台工具集 = 'v120')的构建工具”
【发布时间】:2015-12-09 22:51:52
【问题描述】:

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

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

系统信息

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

【问题讨论】:

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


    【解决方案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 模块时最糟糕的体验。真是浪费时间:/

    【讨论】:

    • 我重新安装VS2015,用安装自述文件中的所有变量清理系统路径变量。收到所有警告,但现在可以正常工作了...¯_(ツ)_/¯
    • 一年多过去了,我也遇到同样的问题...我对这个包也很失望,如果我可以选择我不会使用它。
    【解决方案2】:

    tl;博士

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

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

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

    安装 Visual C++ 构建环境

    选项 1:Visual Studio 2015

    1. 在 VS2015 安装过程中,选择“自定义”。或者,如果您已经安装了 VS2015,请转到 Windows 的“卸载或更改程序”> 从列表中选择 VS2015 > 点击“更改”> 点击“修改”
    2. 选中“Programming Languages”>“Visual C++”下的“Common Tools for Visual C++ 2015”选项
    3. 完成VS2015安装

    选项 2:Visual C++ 构建工具 2015

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

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

    使用 msvs_version

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

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

    配置选项(非必需)

    或者,您可以配置 npm 以始终包含 msvs_version 参数,方法是将其添加到您的 npmrc 或 package.json 中,而不是在命令提示符处指定 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

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

    "config": {
      "msvs_version": 2015
    }
    

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


    文章修订

    1. 在受到 Chuck 关于 v120 工具集的评论的启发下,进一步调查后修订了步骤(感谢 @ChuckWalbourn)
    2. 添加了配置选项
    3. 添加了 VC++ Build Tools 选项
    4. 更新了正式发布的 VC++ Build Tools 链接

    【讨论】:

    • 您还可以通过在 VS 2015 的custom setup options 中选择“Windows 8.1 和 Windows Phone 8.0/8.1 工具”来安装 v120 工具集。
    • @ChuckWalbourn 当您选择“Windows 8.1 和 Windows Phone 8.0/8.1 工具”选项时似乎发生了什么,它选择了“Visual C++ 2015 的通用工具”选项作为依赖项,并且这就是实际安装所需工具集的内容
    • 我在安装 bcrypt 时遇到了一个问题,“npm i bcrypt --msvs_version=2013”​​对我有用
    • 我可以发誓我在安装 VS2015 时选择了所有选项,但是,在阅读此答案并检查后,我发现 C++ 未选中。啊!
    • 但是当构建工具实际安装时会做什么?
    【解决方案3】:

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

    npm install --msvs_version=2015

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

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

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

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

    C:\Program Files (x86)\MSBuild\14.0\Bin\
    

    问题解决了。

    【讨论】:

    • 谢谢。我花了一段时间才弄清楚
    • 这是唯一正确的答案,设置变量是不够的。设置 PATH=C:\Program Files (x86)\MSBuild\12.0\Bin;%PATH% 或设置 PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;%PATH%
    【解决方案4】:

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

    npm 配置集 msvs_version 2013

    npm 配置设置 msvs_version 2015

    【讨论】:

      【解决方案5】:

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

      npm config set msvs_version 2015 --global
      

      这样可以节省您将其放入每个项目的配置对象中。

      【讨论】:

      • 为什么投反对票?其他答案中未提及通过命令行全局设置配置
      • 这个答案有点误导:使用不带--global 标志的npm config set msvs_version 2015 设置可以实现不必将其放入每个项目的配置中的目标。仅当您计划使用不同的 Windows 帐户登录并且希望该设置应用于该计算机上的所有帐户时,才需要 --global 标志
      猜你喜欢
      • 2013-11-17
      • 2014-09-30
      • 2015-10-11
      • 2021-07-19
      • 2019-07-14
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 2022-07-05
      相关资源
      最近更新 更多