Impossible d'installer les modules de nœud qui nécessitent une compilation sous Windows 7 x64 / VS2012

192

Je ne peux installer aucun des modules qui nécessitent 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 Entreprise x64, version 6.1.7601
  • nœud 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 j'ai découvert qu'avec la configuration suivante, la compilation manuelle (appelant directement VCBuild.exe et msbuild.exe) réussit pour le git cloné manuellement: //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

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 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

Vous en aurez peut-être des idées?

Merci.

Alex Netkachov
la source
Avez-vous essayé d'exécuter vcvarsall.batau lieu d'essayer de configurer votre environnement manuellement?
JohnnyHK
Sans succès. Toujours "MSB3411: impossible de charger le composant Visual C ++" VCBuild.exe "."
Alex Netkachov du
BTW, j'ai de meilleurs résultats avec "C: \ Program Files \ Microsoft SDKs \ Windows \ v6.1 \ Bin \ SetEnv.Cmd": erreur fatale C1083: Impossible d'ouvrir le fichier d'inclusion: 'stdint.h': aucun fichier ou répertoire de ce type
Alex Netkachov du
2
Je viens enfin de faire installer bcrypt, ce qui nécessite de construire sur un environnement win7 64 bits, ça a été une douleur dans le cou d'être trié. Avec ma situation, j'ai suivi les instructions pour bcrypt et pour node-gyp. Le clincher pour moi était d'installer le SDK Microsoft Windows 7 et le framework .Net 4. Une fois que cela a été installé (et j'ai redémarré mon shell), j'ai trouvé que je pouvais tout compiler via l'installation pour bcrypt. Je me demandais donc si vous aviez installé le SDK? Je demande car vous ne l'avez pas mentionné dans votre liste.
Metalskin
1
Cela a été publié le 2015-11-19, et CELA MARCHE! (Beaucoup de bonnes suggestions sur ce fil mais pas de joie) github.com/nodejs/node-gyp/issues/629#issuecomment-158163655 La procédure installe Build Tools 2015, pas VS2012.
dkloke

Réponses:

148

Essayez cela - le définira globalement:

npm config set msvs_version 2012 --global
srfrnk
la source
1
Parfait! Correction de tous mes problèmes!
hansmei
2
Excellent, j'obtenais l'erreur lors de l'exécution d'un ensemble de scripts qui invoquaient npm profondément dans les entrailles. Je ne voulais pas modifier les scripts, c'était donc la meilleure option pour moi
Alastair
2
Cela devrait être la réponse recommandée, a fonctionné comme un charme sur Windows 10
William
2
Ça ne marche pas. error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Vert
sur un PC Windows 10 avec VS2017 uniquement - J'ai utilisé la configuration de VS2017 pour installer également les outils de build 2015 VC. puis le correctif de torazaburo a fonctionné :) en fait, la réponse de catalint ci-dessous est meilleure mais je ne l'ai pas essayée ....
Sean
143

Pour ce faire sans l'installation de 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 de @Jacob

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

Alex
la source
3
Bien que je pense que la deuxième commande devrait également avoir deux traits d'union sur son paramètre - j'ai mis deux tirets pour cela et cela a fonctionné. Cela m'a permis de surmonter mes erreurs d'installation npm - merci!
Dullroar
1
@Dullroar superuser.com/questions/372203/ ... cela a fonctionné pour moi avec 1 haussement d'épaules
Alex
Merci pour cela; la npm installcommande l'a fait fonctionner pour moi. Un tiret a fonctionné pour moi aussi.
Seiyria le
Cela devrait être --msvs-version = 2012
RaduM
Cela a fonctionné à merveille avec mon installation Windows 7 x64! Merci Microsoft (d'être des bites)!
Blairg23
60

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 courants. Il installera également Python 2.7, 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 pour 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 être revenu à la normale et votre reconstruction npm install / node-gyp fonctionnera

catalint
la source
Les outils de construction n'incluent pas les ensembles d'outils de plate-forme ... malheureusement, il ne semble y avoir aucun moyen d'installer Visual Studio: (lisez également les instructions d'installation de node-gyp sur Windows: github.com/nodejs/node-gyp
Michael K.
réponse mise à jour pour inclure le nouveau readme de node-gyp, merci @MichaelK.
catalint
2
J'ai installé VS2015 et exécuté cette commande npm config set msvs_version 2015 --globalqui fonctionne également
JRulle
De même, l'installation de Microsoft Build Tools 2015 et les npm config set msvs_version 2015 --globaltravaux en cours d' exécution
Jon Onstott
1
Exécution des « fenêtres-build-outils » comme indiqué ci - dessus à l' aide NPM (Package Node Manager) SAVIEZ travail pour moi, mais seulement lors de l' exécution à travers Microsoft PowerShell . Il s'agit d'un utilitaire Windows fourni par Microsoft depuis plus de 10 ans. Il dispose des droits d'administration requis pour exécuter les outils de génération. Localisez PowerShell, cliquez dessus avec le bouton droit de la souris et exécutez-le en tant qu'administrateur. Notez que l'exécution de l'invite CMD standard en tant qu'administrateur peut également fonctionner, mais j'ai réussi avec PowerShell . L'outillage supplémentaire et la prise en charge des commandes de type UNIX peuvent expliquer en partie pourquoi cela fonctionne, bien que l'exécuter en tant qu'administrateur était la solution la plus importante.
Michael M
41

ajoutez simplement --msvs_version = 2012

node-gyp rebuild --msvs_version=2012

ou

node-gyp configure --msvs_version=2012
node-gyp build 
msulhas
la source
Même réponse que ci-dessus.
Blairg23
1
J'ai répondu en premier, regardez la date :)
msulhas
21

J'ai eu le même problème en essayant d'installer un package pour Node.js. Après quelques recherches approfondies sur Google, j'ai trouvé cette procédure: 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.

Robin Ridderholt
la source
MERCI!!! MASSIVE KUDOS ps vous devez également ajouter Python à votre chemin: stackoverflow.com/questions/4621255/…
sidonaldson
Si vous avez déjà installé Visual Studio, les réponses les plus votées peuvent fonctionner, mais si vous ne l'avez pas du tout, vous avez besoin de cette réponse. Merci!
JD Smith
Cette procédure pas à pas est la meilleure jusqu'à maintenant. Néanmoins, tout ce problème de base64 est totalement inutile et ennuyeux!
Benedikt
Oh ouais, c'est ce dont j'avais besoin. La meilleure promenade que j'ai trouvée et ça marche!
Corin
J'ai un projet Node.js utilisant le SDK Couchbase pour Node qui se construit bien sur mon ordinateur de travail, qui a Visual Studio 2008, 2010 et 2012. Je voulais tester l'installation pour les «amateurs» sans aucune copie de Visual Studio. J'ai désinstallé tous les outils de développement et SDK Microsoft de mon ordinateur personnel et j'ai essayé diverses options «Express». Ce n'est qu'après avoir suivi ces étapes documentées par TooTallNate que j'ai pu construire les binaires Couchbase pour Windows, y compris cette étape pour se relier pour fonctionner en tant qu'application "de bureau" en utilisant NW.js (anciennement node-webkit): 'nw-gyp rebuild - -target = 0.12.0 '
Rick Rutt
13

Grâce à @felixrieseberg , il vous suffit d'installer le package npm windows-build-tools et vous êtes prêt à partir.

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

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

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

Depuis le repo:

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

Windows Vista / 7 nécessite .NET Framework 4.5.1 (actuellement non installé automatiquement par ce package)

Les deux installations sont sans conflit, ce qui signifie qu'elles ne gênent pas les installations existantes de Visual Studio, C ++ Build Tools ou Python.

Ramazan Polat
la source
1
Tu as tout à fait raison. J'ai parcouru les versions VS, npm et gyp pendant des heures, mais sans .NET 4.5.1 (exactement), il n'y a absolument aucun moyen de le compiler. Cela explique également pourquoi il fonctionnera avec la plupart des installations VS, car elles sont fournies avec .NET pré-groupé.
Xan-Kun Clark-Davis
12

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

npm install -g node-gyp -msvs_version=2012

puis

npm install -g restify
amgohan
la source
1
Je ne pense pas que le package restify ait quoi que ce soit à voir avec la question OP, restify n'est que l'un des nombreux packages affectés par le même problème.
adelriosantiago
5

Après des JOURS de fouille, 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: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd" ). Je pense que vous DEVEZ avoir l'ancien SDK 7.1 (même sur 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 vieux 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 lançait 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 les choses.

Rainabba
la source
4

J'ai eu la même idée et j'ai fait toute la magie ci-dessus, la seule chose qui a fait la magie 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 d'environnement GYP_MSVS_VERSION = 2013 et cela devrait fonctionner après."

Coup! ça a marché

amitgur
la source
3

Sous Windows, cela m'a aidé: (les crédits vont à) 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
danielpopa
la source
1
si cela a échoué pour vous, vérifiez si vous avez la variable d'environnement PYTHON = c: \ Python27 \ python.exe et stackoverflow.com/a/15937635/2873481
Vladimir Vukanac
npm install -g node-gyp @ latest?
Alexander Mills
2

Pour Windows 8 64 bits, en installant zmq et protobuf, les éléments suivants ont fonctionné pour moi: Installez Visual Studio 2012 sur la ligne de commande:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf
ihm
la source
Visual Studio 2012 est également livré avec `` Invite de commandes du développeur pour VS2012 '' afin que vous n'ayez pas à personnaliser votre variable PATH d'
environnement
1

Je pense que la solution est de télécharger installer Microsoft Windows sdk pour le serveur 2008 avec .net framework 3.5

ou installez simplement Visual studio 2008 .

Le problème est que Windows builds node-gyp exécute le fichier vcbuid.exe, et pour une raison quelconque, il ne peut pas le trouver.

Merci

Hubert Boma Manille
la source
2
La raison de ne pas trouver ce VCBuild est qu'il a été remplacé par MSBuild en 2010, selon codeproject.com/Articles/562386/...
UnPlan2ned
Voir ma réponse ci-dessous. vcbuild.exe est requis mais de nombreuses variables d'environnement doivent être définies et le projet node-gyp ne les documente pas.
rainabba
0

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

Pour le problème avec vcbuild.exe, ajoutez-le simplement au PATH

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

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

Et à partir de l'invite:

npm install zmq

Cela fonctionne :)

Kleyson Rios
la source
0

Après une longue lutte, j'ai basculé mon architecture de nœuds vers x86 et cela a fonctionné à merveille.

utilisateur3035156
la source
1
pouvez-vous en dire plus sur la façon dont vous êtes passé à x86?
Arman Ortega
0

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

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 le nom du dossier Release dans node-master

Une fois lancé, la création des fichiers prendra du temps.

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.

niket
la source
0

J'ai résolu ce problème sur Windows 8 et Windows 10 Pro avec ce tutoriel. J'essaye beaucoup de fois de résoudre ce problème avec de nombreuses solutions différentes, mais je n'ai travaillé que pour moi avec ceci: 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 nœud comme ce tutoriel, j'utilise NVM et j'ai bien fonctionné, je ne teste pas ce tutoriel avec nodist. J'ai utilisé le nœud 5.2.0.

Marco Blos
la source