Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

npm install for some packages (sqlite3, socket.io) fail with error MSB8020 on Windows 7

When trying to install some node.js packages (sqlite3 and socket.io in particular) using npm install socket.io on my Windows 7 machine with Visual Studio 2012 (and not 2010) I had some failures that looked like this:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(35,5): error MSB8020: The builds tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found. To build using the v100 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install Visual Studio 2010 to build using the Visual Studio 2010 build tools.

like image 877
Gloopy Avatar asked Jan 06 '13 06:01

Gloopy


3 Answers

To get around this on my machine I did this command to install the package:

npm install socket.io --msvs_version=2012

I found the answer here when having the problem with installing sqlite3 and it worked with socket.io as well.

These might be more permanent solutions to fix the problem:

  1. Install Visual Studio 2010
  2. Updating the npm internal copy to a newer version of node-gyp as described here and here (probably the better option although I didn't get it working but didn't try for too long)
like image 190
Gloopy Avatar answered Sep 25 '22 10:09

Gloopy


Another option is to change config instead of specifying msvs_version every time:

npm config set msvs_version 2012
like image 42
Pavel Avatar answered Sep 25 '22 10:09

Pavel


I have both Visual Studio Express 2013 and Visual Studio Community 2015 installed.

I was getting C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140') cannot be found. To build using the v140 build tools, please install v140 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 "Upgrade Solution...". [G:\work\cinema\node_modules\engine.io\node_modules\bufferutil\build\bufferutil.vcxproj]

The reason was that the latest Node.js for Windows downloaded from https://nodejs.org contains an old npm v2 (and old node-gyp inside that npm v2).

I had to update Node.js'es internal npm (which also updated node-gyp):

(open console as an administrator)
cd "C:\Program Files\nodejs"
npm install npm@latest

npm config set msvs_version 2013

Now it works (seems that it's using VS 2013 for the time being)

like image 39
catamphetamine Avatar answered Sep 22 '22 10:09

catamphetamine