node.js - node - socket javascript
La instalaciĆ³n de npm para algunos paquetes(sqlite3, socket.io) falla con el error MSB8020 en Windows 7 (4)
Cuando intentaba instalar algunos paquetes node.js (sqlite3 y socket.io en particular) usando npm install socket.io
en mi máquina con Windows 7 Visual Studio 2012 (y no en 2010) tuve algunos fallos que se veían así:
C: / Archivos de programa (x86) / MSBuild / Microsoft.Cpp / v4.0 / V110 / Microsoft.Cpp.Platform.targets (35,5): error MSB8020: las herramientas de compilación para Visual Studio 2010 (Platform Toolset = ''v100 '') no pudo ser encontrado. Para compilar utilizando las herramientas de compilación v100, haga clic en el menú Proyecto o haga clic con el botón derecho en la solución y luego seleccione "Actualizar proyectos de VC ++ ...". Instale Visual Studio 2010 para compilar con las herramientas de compilación de Visual Studio 2010.
TL; DR
Si NO QUIERES que node-gyp
dependa de tu versión instalada de Visual Studio (o no tengas VS instalado), instala windows-build-tools
(mira a continuación). Esto eliminará tanto el error como evitará problemas futuros al actualizar su versión instalada de Visual Studio.
Si desea que node-gyp
dependa de su versión instalada de Visual Studio, entonces npm config set msvs_version 2015
, sustituya su etiqueta de versión en lugar de 2015
. Las etiquetas de versiones válidas son: 2015
, 2014
, 2013
, 110
, 100
Reparar usando windows-build-tools
Según las instrucciones de instalación de nodo-gyp , también puedes hacer
npm install --global --production windows-build-tools
desde un shell de comando ELEVADO
Esto instalará estrictamente las herramientas de compilación de Microsoft Visual C ++ (esto se usará en lugar de Visual Studio para compilación) requeridas por node-gyp
, y establecerá adecuadamente msvs_version
a la versión recién instalada.
Después de la instalación, debe verificar que la msvs_version
establecida por windows-build-tools
no haya sido anulada. Al ejecutar npm config list
, msvs_version
debe aparecer en ; globalconfig C:/Users/Username/AppData/Roaming/npm/etc/npmrc
; globalconfig C:/Users/Username/AppData/Roaming/npm/etc/npmrc
; si no lo hace, el valor establecido por windows-build-tools
ha sido anulado y el valor reemplazado debe ser eliminado. npm config delete msvs_version
debe eliminar el valor anulado y el establecido por las herramientas de compilación debe aparecer en la sección de configuración global.
Otra opción es cambiar la configuración en lugar de especificar msvs_version cada vez:
npm config set msvs_version 2012
Para evitar esto en mi máquina, hice este comando para instalar el paquete:
npm install socket.io --msvs_version=2012
Encontré la respuesta here cuando tuve el problema con la instalación de sqlite3 y también funcionó con socket.io.
Estas podrían ser soluciones más permanentes para solucionar el problema:
Tengo instalado Visual Studio Express 2013 y Visual Studio Community 2015.
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]
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]
El motivo fue que el último Node.js para Windows descargado de https://nodejs.org contiene un antiguo npm
v2 (y un antiguo node-gyp
dentro de ese npm
v2).
Tuve que actualizar el npm interno de npm
(que también actualizó node-gyp
):
(open console as an administrator)
cd "C:/Program Files/nodejs"
npm install npm@latest
npm config set msvs_version 2013
Ahora funciona (parece que está usando VS 2013 por el momento)