npm install error: "The build tools for v120 (Platform Toolset = 'v120') cannot be found"

2Toad picture 2Toad · Sep 14, 2015 · Viewed 24.5k times · Source

While running an npm install that required a node-gyp rebuild, the following build error was thrown:

MSB8020: The build tools for v120 (Platform Toolset = 'v120') cannot be found. To build using the v120 build tools, please install v120 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution"

System Information

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

Answer

2Toad picture 2Toad · Sep 14, 2015

tl;dr

Use the msvs_version param: npm install --msvs_version=2015

What if the msvs_version param doesn't work?

If the msvs_version param doesn't work, it's probably because you don't have a Visual C++ 2015 build environment installed.

Install Visual C++ Build Environment

Option 1: Visual Studio 2015

  1. During VS2015 installation, select "Custom". Or, if you've already installed VS2015, go to Windows' "Uninstall or change a program" > select VS2015 from the list > click "Change" > click "Modify"
  2. Check the "Common Tools for Visual C++ 2015" option, under "Programming Languages" > "Visual C++"
  3. Finish the VS2015 installation

Option 2: Visual C++ Build Tools 2015

As an alternative to VS2015, you can install the Visual C++ Build Tools 2015 released by Microsoft:

  1. During VC++ installation, select "Custom"
  2. Check the "Windows 8.1 SDK" and "Windows 10 SDK" options
  3. Finish the VC++ installation

Use msvs_version

Now that a Visual C++ 2015 build environment has been installed, you can tell npm to use it via the msvs_version param:

  1. Open PowerShell
  2. Use the msvs_version param: npm install --msvs_version=2015

Config Options (not required)

Optionally, instead of specifying the msvs_version at the command prompt, you can configure npm to always include the msvs_version param by adding it to your npmrc or package.json:

npmrc

Open PowerShell and run npm config set msvs_version 2015, which will add this param to your user npmrc file. Henceforth, every time you run npm install, as this user, the msvs_version=2015 param will automatically be included

optionally, you can include the global flag npm config set msvs_version 2015 --global if you plan on logging in with different Windows accounts, and you want this setting to apply to all accounts on the machine

package.json

Modify your project's package.json file to include:

"config": {
  "msvs_version": 2015
}

Henceforth, every time you run npm install, for this project, the msvs_version=2015 param will automatically be included


Article Revisions

  1. Steps revised after further investigation inspired by Chuck's comment about the v120 toolset (thanks @ChuckWalbourn)
  2. Added config options
  3. Added VC++ Build Tools option
  4. Updated VC++ Build Tools link for official release