首页 文章

npm安装错误:“无法找到v120的构建工具(Platform Toolset = 'v120')”

提问于
浏览
18

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

MSB8020:找不到v120(Platform Toolset ='v120')的构建工具 . 要使用v120构建工具进行构建,请安装v120构建工具 . 或者,您可以通过选择“项目”菜单或右键单击解决方案,然后选择“重新定位解决方案”来升级到当前的Visual Studio工具 .

系统信息

  • Windows 10(x64)

  • Visual Studio 2015

  • node v0.12.7

  • npm v2.11.3

  • node-gyp v2.0.1

5 回答

  • 44

    tl;博士

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

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

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

    安装Visual C构建环境

    选项1:Visual Studio 2015

    • 在VS2015安装期间,选择"Custom" . 或者,如果您've already installed VS2015, go to Windows' "Uninstall or change a program">从列表中选择VS2015>单击"Change">单击"Modify"

    • 检查"Common Tools for Visual C++ 2015"选项,"Programming Languages"> "Visual C++"

    • 完成VS2015安装

    选项2:Visual C Build Tools 2015

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

    • 在VC安装期间,选择"Custom"

    • 检查"Windows 8.1 SDK"和"Windows 10 SDK"选项

    • 完成VC安装

    使用msvs_version

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

    • 打开PowerShell

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

    配置选项(不是必需的)

    (可选)不是在命令提示符下指定msvs_version,而是将npm配置为始终包含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


    文章修订

    • 经过Chuck关于v120工具集的评论启发后进一步调查的步骤(感谢@ChuckWalbourn)

    • 添加了配置选项

    • 添加了VC Build Tools选项

    • 更新了VC Build Tools链接以供正式发布

  • 0

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

    npm config set msvs_version 2015 --global
    

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

  • 1

    我将分享这个答案,因为没有其他修复解决了我的问题 . 我有相同的错误,但设置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\
    

    问题解决了 .

  • 2

    我已经花了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

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

    npm config set msvs_version 2013

    要么

    npm config set msvs_version 2015

相关问题