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
I'll share this answer since none of the other fixes resolved my issue. I was having the same errors but setting the msvs param:
npm install --msvs_version=2015
was not solving the problem. I could see that it was looking in the wrong place for the toolset no matter what I did.
Long story short I learned that MSBuild is now packaged with Visual Studio and no longer packaged with .NET. Sure enough I had this entry in the PATH variable:
and consequently the wrong (old) version of MSBuild was being called. I removed this entry and added the following path which is relevant for VS2015:
Problem solved.
Setting version to 2015 didn't help for me. Try setting it to 2013 instead:
npm config set msvs_version 2013
or
npm config set msvs_version 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
Option 2: Visual C++ Build Tools 2015
As an alternative to VS2015, you can install the Visual C++ Build Tools 2015 released by Microsoft:
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:
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 runnpm install
, as this user, themsvs_version=2015
param will automatically be includedpackage.json
Modify your project's package.json file to include:
Henceforth, every time you run
npm install
, for this project, themsvs_version=2015
param will automatically be includedArticle Revisions
I already spend 2 days installing all VS versions...
Return all lot of errors :
Using
Return a lot of warnings, compile but doesn't work properly after.
This is my worst ever experience with a npm module. What a waste of time :/
I wanted to add a comment to 2Toad's answer but stackoverflow doesn't let me. You can set the msvs_version globally with this command:
This saves you putting it in each projects config object.