在运行需要node-gyp重建的npm install
时,抛出了以下构建错误:
MSB8020:v120的构建工具(Platform Toolset =' v120')不能 被发现。要使用v120构建工具进行构建,请安装v120 构建工具。或者,您可以升级到当前的Visual Studio工具选择Project菜单或右键单击 解决方案,然后选择"重新定位解决方案"
答案 0 :(得分:44)
使用msvs_version参数:npm install --msvs_version=2015
如果msvs_version参数不起作用,可能是因为您没有安装Visual C ++ 2015构建环境。
作为VS2015的替代方案,您可以安装Microsoft发布的Visual C++ Build Tools 2015:
现在已经安装了Visual C ++ 2015构建环境,您可以通过msvs_version参数告诉npm使用它:
npm install --msvs_version=2015
可选地,您可以将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 :(得分: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