web-dev-qa-db-fra.com

Impossible d'installer des modules de nœuds nécessitant une compilation sous Windows 7 x64/VS2012

Je ne peux installer aucun des modules nécessitant une compilation. Tout ce qu'ils échouent avec l'erreur suivante:

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

Mon environnement:

  • Windows 7 Enterprise x64, version 6.1.7601
  • noeud x86 0.8.16
  • npm 1.2.0
  • node-gyp 0.8.2
  • Visual Studio 2012 et de nombreux packages

Variables d'environnement associées:

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

Non INCLUDE, LIB, LIBPATH, etc.

J'ai fait une brève enquête sur le problème et je me suis rendu compte qu'avec la configuration suivante, la compilation manuelle (appelant directement VCBuild.exe et msbuild.exe) réussissait pour le git: //github.com/einaros/ws.git cloné manuellement:

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

J'ai essayé d'appeler node-gyp avec les mêmes variables et cela a échoué:

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 [email protected]
gyp info using [email protected] | 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

Peut-être aurez-vous des idées à ce sujet?

Merci.

188
Alex Netkachov

Essayez cela - le définira globalement:

npm config set msvs_version 2012 --global
145
srfrnk

Pour le faire sans installation VS2010 et uniquement en 2012, définissez l'indicateur msvs_version:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

selon le commentaire @Jacob

npm install --msvs_version=2013 si vous avez la version 2013

142
Alex

Mise à jour v3: https://www.npmjs.com/package/windows-build-tools

npm install --global windows-build-tools

télécharge et installe Visual C++ Build Tools 2015, fourni gratuitement par Microsoft. Ces outils sont nécessaires pour compiler des modules natifs populaires. Il installera également Python 2.7, en configurant votre machine et npm de manière appropriée.

Mise à jour v2:

node-gyp a mis à jour son fichier readme pour inclure HOW-TO for windows

Original: 

Pas besoin de tout le studio visuel, vous pouvez télécharger uniquement les outils de construction

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

exécutez cmd pour définir l'indicateur global pour utiliser la version 2013:

npm config set msvs_version 2013 --global

après cela, tout devrait revenir à la normale et votre reconstruction npm install/node-gyp fonctionnera 

59
catalint

il suffit d'ajouter --msvs_version = 2012 

node-gyp rebuild --msvs_version=2012

ou 

node-gyp configure --msvs_version=2012
node-gyp build 
41
msulhas

J'ai eu le même problème en essayant d'installer un paquet pour Node.js. Après quelques recherches approfondies, j'ai trouvé ce guide: https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

Après avoir suivi ces étapes, je pouvais utiliser "npm install" sans aucun problème.

21
Robin Ridderholt

Merci à @felixrieseberg , il vous suffit d’installer le paquet windows-build-tools npm et vous êtes prêt à partir.

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

Vous n'avez pas besoin d'installer Visual Studio.

Vous n'avez pas besoin d'installer Microsoft Build Tools.

De la repo:

Après l’installation, npm exécutera automatiquement ce module, qui télécharge et installe Visual C++ Build Tools 2015, fourni gratuitement facturé par Microsoft. Ces outils sont nécessaires pour compiler populaire modules natifs. Il installera également Python 2.7, en configurant votre fichier machine et npm de manière appropriée.

Windows Vista/7 nécessite .NET Framework 4.5.1 (actuellement pas Installé automatiquement par ce paquet)

Les deux installations sont sans conflit, ce qui signifie qu'elles ne perturbent pas les installations existantes de Visual Studio, des outils de compilation C++ ou de Python.

13
Ramazan Polat

sur Windows 8, cela a fonctionné pour moi en utilisant:

npm install -g node-gyp -msvs_version=2012

puis

npm install -g restify
11
amgohan

Après des jours de fouilles, quelqu'un sur IRC] m'a suggéré d'essayer d'utiliser le

Windows 7.1 SDK Command Prompt

Raccourci (liens vers C:\Windows\System32\cmd.exe/E: ON/V: ON/T: 0E/K "C:\Programmes SDK\Microsoft\Windows\v7.1\Bin\SetEnv.cmd" ). Je pense que vous DEVEZ disposer de l’ancien SDK 7.1 (même sous Windows 8.1), car les plus récents utilisent msbuild.exe au lieu de vcbuild.exe, ce que node-gyp veut même s’il est deux fois plus ancien que node à ce stade: /

Une fois dans cette invite, j'ai dû exécuter ce qui suit pour obtenir le contexte x86 car le compilateur générait une erreur sinon sur l'architecture:

setenv.cmd /Release /x86

ALORS, j’ai pu exécuter avec succès les commandes npm qui essayaient d’utiliser node-gyp pour recompiler des choses.

5
rainabba

J'ai eu la même idée et fait toute la magie ci-dessus, la seule chose qui l'a fait pour moi est de https://github.com/atom/atom/issues/2435

"Parce que --msvs_version = 2013 n'est pas passé à node-gyp lorsqu'il est exécuté par le script de construction. Définissez la variable GYP_MSVS_VERSION = 2013 et elle fonctionnera après."

Coup! ça a marché

4
amitgur

Sur Windows Cela m'a aidé: (crédits vont vers) https://github.com/TooTallNate/node-gyp/wiki/Updating-npm%27s-bundled-node-gyp J'ai essayé MINGW32, mais sans succès.

sur cmd.exe

$ cd "C:\Program Files\nodejs\node_modules\npm"
$ npm install -g node-gyp@latest
3
danielpopa

Pour Windows 8 64 bits, l'installation de zmq et de protobuf, les éléments suivants ont fonctionné pour moi: Installer Visual Studio 2012 Sur la ligne de commande:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf
2
ihm
  1. Installez Python 2.7 (pas 3.x)
  2. Ajoutez le chemin d'accès au répertoire contenant vcbuild.exe sur votre variable d'environnement PATH 
  3. Si vous avez besoin de vcbuild.exe obtenez-le ici https://github.com/kin9puppy/vcbuildFixForNode
1
kingPuppy

Je pense que la solution consiste à télécharger installer Microsoft Windows sdk pour Server 2008 avec .net Framework 3.5

ou installez simplement Visual Studio 2008 .

Le problème concerne les versions Windows de node-gyp qui exécute le fichier vcbuid.exe et, pour une raison quelconque, ne le trouve pas.

Merci

1

Après une longue lutte, je suis passé de l’architecture de mon noeud à x86 et cela a fonctionné à merveille.

0
user3035156

dans cmd, définissez le chemin Visual Studio en fonction de votre version

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

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

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

Dans node-master (module de nœud d'origine téléchargé depuis git), exécutez vcbuild.bat avec les privilèges d'administrateur . Vcbild.bat générera des dépendances liées à Windows et ajoutera un nom de dossier.

Une fois que cela fonctionnera, il faudra du temps pour construire les fichiers.

Ensuite, dans le répertoire contenant le fichier .gyp, utilisez la commande

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

cela construira toutes les dépendances.

0
niket

J'ai également eu beaucoup de problèmes pour compiler nodejs zmq.

Pour le problème avec vcbuild.exe, ajoutez-le simplement à la variable PATH

Pour d’autres problèmes, je pourrais compiler en utilisant simplement Windows 7.1 SDK Command Prompt

(Menu Programmes -> SDK Microsoft Windows v7.1 -> Invite de commandes du SDK Windows 7.1)

Et de l'invite:

npm install zmq

Ça marche :)

0
Kleyson Rios

J'ai résolu ce problème sous Windows 8 et Windows 10 Pro avec ce tutoriel . J'essayais souvent de résoudre ce problème avec différentes solutions, mais cela ne fonctionnait que pour moi: http: // www.serverpals.com/blog/building-using-node-gyp-with-visual-studio-express-2015-on-windows-10-pro-x64 Je remarque que je n'ai pas utilisé nodist pour contrôler la version du noeud comme dans ce tutoriel, j’utilise NVM et a bien fonctionné, je ne teste pas ce tutoriel avec nodist. J'ai utilisé le noeud 5.2.0.

0
Marco Blos