npm 安装错误:“找不到 v120(平台工具集 = 'v120')的构建工具”

Posted

技术标签:

【中文标题】npm 安装错误:“找不到 v120(平台工具集 = \'v120\')的构建工具”【英文标题】: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

【问题讨论】:

【参考方案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

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

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

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

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

使用 msvs_version

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

    打开 PowerShell 使用 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 参数将自动被包含


文章修订

    在受到 Chuck 关于 v120 工具集的评论的启发下,进一步调查后修订了步骤(感谢 @ChuckWalbourn) 添加了配置选项 添加了 VC++ Build Tools 选项 更新了正式发布的 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 的答案添加评论,但 *** 不允许。 您可以使用以下命令全局设置 msvs_version:

npm config set msvs_version 2015 --global

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

【讨论】:

为什么投反对票?其他答案中未提及通过命令行全局设置配置 这个答案有点误导:使用不带--global 标志的npm config set msvs_version 2015 设置可以实现不必将其放入每个项目的配置中的目标。仅当您计划使用不同的 Windows 帐户登录并且希望该设置应用于该计算机上的所有帐户时,才需要 --global 标志

以上是关于npm 安装错误:“找不到 v120(平台工具集 = 'v120')的构建工具”的主要内容,如果未能解决你的问题,请参考以下文章

npm 包无法安装“npm ERR!错误:EACCES:权限被拒绝”

在 elasticbeanstalk 上安装 npm canvas - npm 安装错误

npm 安装错误,错误为:ENOENT,chmod

从 npm 安装 Electron-Js 时出现 npm 错误

Phonegap 安装错误 (npm)

npm 安装失败,npm 错误!无效的 json 响应