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 安装错误