tutorial socket node example node.js sqlite3 visual-studio-2012 socket.io npm

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:

  1. Instalar Visual Studio 2010
  2. Actualizando la copia interna npm a una versión más nueva de node-gyp como se describe here y here (probablemente la mejor opción aunque no funcioné pero no intenté por mucho tiempo)

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)