No se pueden instalar módulos de nodo que requieren compilación en Windows 7 x64 / VS2012

192

No puedo instalar ninguno de los módulos que requieren compilación. Todos fallan con el siguiente error:

MSBUILD : error MSB3411: Could not load the Visual C++ component "VCBuild.exe". ...

Mi entorno:

  • Windows 7 Enterprise x64, versión 6.1.7601
  • nodo x86 0.8.16
  • npm 1.2.0
  • nodo-gyp 0.8.2
  • Visual Studio 2012 y numerosos paquetes

Variables de entorno relacionadas:

Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShel l\v1.0;C:\Program Files\TortoiseGit\bin;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;c:\tools;c:\tools\node

No INCLUYE, LIB, LIBPATH, etc.

Hice una breve investigación del problema y descubrí que con la siguiente configuración, la compilación manual (llamando directamente a VCBuild.exe y msbuild.exe) tiene éxito para el git clonado manualmente: //github.com/einaros/ws.git:

SET Configuration=Release
SET PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\vcpackages
SET PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\bin;%PATH%
SET PATH=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\Common7\IDE;%PATH%
SET PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
SET PATH=%SystemRoot%\system32;%PATH%

SET INCLUDE=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\include
SET INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%

SET LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Lib
SET LIB=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\lib;%LIB%

SET MSBUILD="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"

VCBuild.exe C:\Tools\node\ws\build\bufferutil.vcproj "Release|Win32" /useenv
VCBuild.exe C:\Tools\node\ws\build\validation.vcproj "Release|Win32" /useenv
%MSBUILD% build/binding.sln /verbosity:diagnostic /nologo /p:Configuration=Release;Platform=Win32

Intenté llamar a node-gyp con las mismas variables y falló:

C:\!> git clone https://github.com/einaros/ws.git
C:\!> cd ws
C:\!\ws>node-gyp configure
...
C:\!\ws>node-gyp build
gyp info it worked if it ends with ok
gyp info using node-gyp@0.8.2
gyp info using node@0.8.16 | win32 | ia32
gyp info spawn C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
gyp info spawn args [ 'build/binding.sln',
gyp info spawn args   '/clp:Verbosity=minimal',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=Win32' ]
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
C:\Users\User\.node-gyp\0.8.16\deps\uv\include\uv.h(55): fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory [C:\!\
ws\build\binding.sln]
C:\Users\User\.node-gyp\0.8.16\deps\uv\include\uv.h(55): fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory [C:\!\
ws\build\binding.sln]
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (c:\Tools\node\node_modules\node-gyp\lib\build.js:255:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:99:17)
gyp ERR! stack     at Process._handle.onexit (child_process.js:678:10)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "c:\\Tools\\node\\\\node.exe" "c:\\Tools\\node\\node_modules\\node-gyp\\bin\\node-gyp.js" "build"
gyp ERR! cwd C:\!\ws
gyp ERR! node -v v0.8.16
gyp ERR! node-gyp -v v0.8.2
gyp ERR! not ok

¿Quizás tengas algunas ideas al respecto?

Gracias.

Alex Netkachov
fuente
¿Has intentado ejecutar en vcvarsall.batlugar de intentar configurar tu entorno manualmente?
JohnnyHK
Sin éxito. Aún así "MSB3411: no se pudo cargar el componente de Visual C ++" VCBuild.exe "."
Alex Netkachov el
Por cierto, tengo mejores resultados con "C: \ Archivos de programa \ Microsoft SDKs \ Windows \ v6.1 \ Bin \ SetEnv.Cmd": error fatal C1083: No se puede abrir el archivo de inclusión: 'stdint.h': No existe tal archivo o directorio
Alex Netkachov
2
Finalmente, tengo que instalar bcrypt, lo que requiere construir en un entorno win7 de 64 bits, ha sido una molestia ordenarlo. Con mi situación, seguí las instrucciones para bcrypt y para node-gyp. El factor decisivo para mí fue instalar Microsoft Windows 7 SDK y .Net 4 framework. Una vez que se instaló (y reinicié mi shell) descubrí que podía compilar todo a través de la instalación de bcrypt. ¿Entonces me preguntaba si instaló el SDK? Pregunto porque no lo mencionaste en tu lista.
Metalskin
1
¡Esto fue publicado el 19/11/2015 y FUNCIONA! (Muchas buenas sugerencias sobre este hilo, pero no es divertido ) github.com/nodejs/node-gyp/issues/629#issuecomment-158163655 El procedimiento instala Build Tools 2015, no VS2012.
dkloke

Respuestas:

148

Intenta eso: lo configurará globalmente:

npm config set msvs_version 2012 --global
srfrnk
fuente
1
¡Perfecto! ¡Solucioné todos mis problemas!
hansmei
2
Excelente, recibí el error al ejecutar un conjunto de scripts que invocaban npm en las entrañas. No quería modificar los guiones, así que esta fue la mejor opción para mí
Alastair,
2
Esta debería ser la respuesta recomendada, funcionó de maravilla en Windows 10
William
2
No funciona error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Verde
solo en una PC con Windows 10 con VS2017: utilicé la configuración de VS2017 para instalar también las herramientas de compilación VC 2015. entonces torazaburo de solución trabajado :) en realidad la respuesta de catalint a continuación se ve mejor, pero yo no lo he probado ....
Sean
143

Para hacerlo sin la instalación de VS2010, y solo 2012, establezca el indicador msvs_version:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

según el comentario de @Jacob

npm install --msvs_version=2013 si tienes la versión 2013

Alex
fuente
3
Aunque creo que el segundo comando también debe tener dos guiones en su parámetro, puse dos guiones y funcionó. Esto me superó mis errores de instalación de npm, ¡gracias!
Dullroar
1
@Dullroar superuser.com/questions/372203/...~~V~~singular~~3rd que trabajó para mí con 1 tablero encogimiento de hombros
Alex
Gracias por esto; el npm installcomando lo hizo funcionar para mí. Un guión también funcionó para mí.
Seiyria
Debería ser --msvs-version = 2012
RaduM
¡Esto funcionó increíblemente con mi instalación de Windows 7 x64! ¡Gracias Microsoft (por ser un idiota)!
Blairg23
60

Actualización v3: https://www.npmjs.com/package/windows-build-tools

npm install --global windows-build-tools

descarga e instala Visual C ++ Build Tools 2015, proporcionado de forma gratuita por Microsoft. Estas herramientas son necesarias para compilar módulos nativos populares. También instalará Python 2.7, configurando su máquina y npm adecuadamente.

Actualización v2:

node-gyp actualizó su archivo léame para incluir COMO para Windows

Original:

No necesita todo el estudio visual, puede descargar solo las herramientas de compilación

Microsoft Build Tools 2013: http://www.microsoft.com/en-us/download/details.aspx?id=40760

ejecute cmd para establecer un indicador global para usar la versión 2013:

npm config set msvs_version 2013 --global

después de esto, todo debería volver a la normalidad y su npm install / node-gyp rebuild funcionará

catalint
fuente
Las herramientas de compilación no incluyen los conjuntos de herramientas de la plataforma ... lamentablemente parece que no hay forma de instalar Visual Studio :( también lea las instrucciones de instalación para node-gyp en Windows: github.com/nodejs/node-gyp
Michael K.
respuesta actualizada para incluir el nuevo archivo Léame de node-gyp, gracias @MichaelK.
catalint
2
Instalé VS2015 y ejecuté este comando npm config set msvs_version 2015 --globalque también funciona
JRulle
Del mismo modo, instalar Microsoft Build Tools 2015 y ejecutar npm config set msvs_version 2015 --globaltrabajos
Jon Onstott
1
Ejecutar las 'herramientas de compilación de Windows' como se indicó anteriormente usando NPM (Node Package Manager) DID funcionó para mí, pero solo cuando se ejecuta a través de Microsoft PowerShell . Esta es una utilidad de Windows proporcionada por Microsoft durante más de 10 años. Tiene los derechos administrativos necesarios para ejecutar las herramientas de compilación. Localice PowerShell, haga clic derecho sobre él y ejecútelo como Administrador. Tenga en cuenta que ejecutar el indicador CMD estándar como administrador también puede funcionar, pero tuve éxito con PowerShell . Las herramientas adicionales y el soporte de comando similar a UNIX pueden ser parte de por qué funciona, aunque ejecutarlo como administrador fue la solución más grande.
Michael M
41

solo agregue --msvs_version = 2012

node-gyp rebuild --msvs_version=2012

o

node-gyp configure --msvs_version=2012
node-gyp build 
msulhas
fuente
La misma respuesta que la anterior.
Blairg23
1
Respondí primero, mira la fecha :)
msulhas
21

Tuve el mismo problema al intentar instalar un paquete para Node.js. Después de una búsqueda exhaustiva en Google, encontré este tutorial: https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

Cuando seguí estos pasos pude usar "npm install" sin ningún problema.

Robin Ridderholt
fuente
¡¡¡GRACIAS!!! KUDOS MASIVOS ps también tienes que agregar Python a tu camino: stackoverflow.com/questions/4621255/…
sidonaldson
Si ya tiene instalado Visual Studio, las respuestas más votadas pueden funcionar, sin embargo, si no lo tiene, necesita esta respuesta. ¡Gracias!
JD Smith
Este tutorial es el mejor hasta ahora. ¡Sin embargo, todo este problema de base64 es totalmente innecesario y molesto!
Benedikt
Oh sí, esto es lo que necesitaba. ¡El mejor recorrido que he encontrado y funciona!
Corin
Tengo un proyecto Node.js que usa Couchbase SDK for Node que funciona bien en mi computadora de trabajo, que tiene Visual Studio 2008, 2010 y 2012. Quería probar la instalación para "aficionados" sin ninguna copia de Visual Studio. Desinstalé todas las herramientas de desarrollo y SDK de Microsoft de la computadora de mi casa, y probé varias opciones "Express". Solo después de seguir estos pasos documentados por TooTallNate pude construir los binarios de Couchbase para Windows, incluido este paso para volver a vincular para la operación como una aplicación de "escritorio" usando NW.js (anteriormente node-webkit): 'nw-gyp rebuild - -target = 0.12.0 '
Rick Rutt
13

Gracias a @felixrieseberg , solo necesita instalar el paquete npm de windows-build-tools y listo.

npm install --global --production windows-build-tools

No necesitará instalar Visual Studio.

No necesitará instalar Microsoft Build Tools.

Del repositorio:

Después de la instalación, npm ejecutará automáticamente este módulo, que descarga e instala Visual C ++ Build Tools 2015, proporcionado de forma gratuita por Microsoft. Estas herramientas son necesarias para compilar módulos nativos populares. También instalará Python 2.7, configurando su máquina y npm adecuadamente.

Windows Vista / 7 requiere .NET Framework 4.5.1 (actualmente este paquete no lo instala automáticamente)

Ambas instalaciones no tienen conflictos, lo que significa que no se meten con las instalaciones existentes de Visual Studio, C ++ Build Tools o Python.

Ramazan Polat
fuente
1
Tienes toda la razón. Estuve en versiones VS, npm y gyp durante horas, pero sin .NET 4.5.1 (exactamente) no hay absolutamente ninguna manera de compilarlo. Eso también explica por qué funcionará con la mayoría de las instalaciones VS, ya que vienen con .NET pre-incluido.
Xan-Kun Clark-Davis
12

en Windows 8, funcionó para mí usando:

npm install -g node-gyp -msvs_version=2012

luego

npm install -g restify
amgohan
fuente
1
No creo que el paquete restify tenga nada que ver con la pregunta de OP, restify es solo uno de los varios paquetes afectados por el mismo problema.
adelriosantiago
5

Después de DÍAS de excavación, alguien en IRC me sugirió que intentara usar el

Windows 7.1 SDK Command Prompt

Acceso directo (enlaces a C: \ Windows \ System32 \ cmd.exe / E: ON / V: ON / T: 0E / K "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd" ) Creo que DEBES tener el SDK 7.1 anterior (incluso en Windows 8.1) porque los más nuevos usan msbuild.exe en lugar de vcbuild.exe, que es lo que quiere node-gyp, aunque en este momento es el doble de viejo que el nodo: /

Una vez en ese indicador, tuve que ejecutar lo siguiente para obtener el contexto x86 porque el compilador arrojó como error lo contrario sobre la arquitectura:

setenv.cmd /Release /x86

ENTONCES pude ejecutar con éxito comandos npm que intentaban usar node-gyp para recompilar cosas.

rainabba
fuente
4

Tuve el mismo isuee e hice toda la magia anterior, lo único que hizo la magia para mí es de https://github.com/atom/atom/issues/2435

"Debido a que --msvs_version = 2013 no se pasa a node-gyp cuando lo ejecuta el script de compilación. Establezca la variable de env GYP_MSVS_VERSION = 2013 y debería funcionar después".

¡Explosión! funcionó

amitgur
fuente
2

Para Windows 8 de 64 bits, la instalación de zmq y protobuf, lo siguiente funcionó para mí: Instalar Visual Studio 2012 en la línea de comando:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf
ihm
fuente
Visual Studio 2012 también viene con 'Símbolo del sistema de desarrollador para VS2012', por lo que no tiene que personalizar su variable de RUTA del
entorno
1

Creo que la solución es descargar instalar Microsoft Windows SDK para el servidor 2008 con .NET Framework 3.5

o simplemente instale Visual studio 2008 .

El problema es para las compilaciones de Windows node-gyp ejecuta el archivo vcbuid.exe, y por alguna razón no puede encontrarlo.

Gracias

Hubert Boma Manilla
fuente
Aquí está el enlace del SDK: microsoft.com/en-us/download/details.aspx?id=11310
r03
2
La razón por la que no encontró VCBuild es que fue reemplazado por MSBuild en 2010, de acuerdo con codeproject.com/Articles/562386/…
UnPlan2ned
Vea mi respuesta a continuación. Se requiere vcbuild.exe, pero se deben establecer muchas variables de entorno y el proyecto node-gyp no las documenta.
rainabba
0

También tuve muchos problemas para compilar nodejs zmq.

Para el problema con vcbuild.exe, simplemente agréguelo a la RUTA

Para otros problemas podría compilar simplemente usando Windows 7.1 SDK Command Prompt

(Programas de menú -> Microsoft Windows SDK v7.1 -> Símbolo del sistema de Windows 7.1 SDK)

Y desde el aviso:

npm install zmq

Eso funciona :)

Kleyson Rios
fuente
0

Después de una larga lucha, cambié mi arquitectura de nodo a x86 y funcionó de maravilla.

usuario3035156
fuente
1
¿Puedes dar más detalles sobre cómo te cambiaste a x86?
Arman Ortega
0

en cmd establece la ruta de Visual Studio dependiendo de tu versión como

Visual Studio 2010 (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%

Visual Studio 2012 (VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS%

Visual Studio 2013 (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%

En node-master (módulo de nodo original descargado de git) ejecute vcbuild.bat con privilegios de administrador. vcbild.bat generará dependencias relacionadas con Windows y agregará el nombre de la carpeta Release en node-master

Una vez que se ejecute, llevará tiempo crear los archivos.

Luego, en el directorio que tiene el archivo .gyp, use el comando

node-gyp rebuild --msvs_version=2012 --nodedir="Dive Name:\path to node-master\node-master"

Esto construirá todas las dependencias.

niket
fuente