Knotenmodule, die unter Windows 7 x64 / VS2012 kompiliert werden müssen, können nicht installiert werden

192

Ich kann keines der Module installieren, die kompiliert werden müssen. Sie scheitern alle mit folgendem Fehler:

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

Meine Umgebung:

  • Windows 7 Enterprise x64, Version 6.1.7601
  • Knoten x86 0.8.16
  • npm 1.2.0
  • Node-Gyp 0.8.2
  • Visual Studio 2012 und zahlreiche Pakete

Verwandte Umgebungsvariablen:

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

Kein INCLUDE, LIB, LIBPATH usw.

Ich habe das Problem kurz untersucht und festgestellt, dass mit dem folgenden Setup die manuelle Kompilierung (direkter Aufruf von VCBuild.exe und msbuild.exe) für das manuell geklonte Git erfolgreich ist: //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

Ich habe versucht, Node-Gyp mit denselben Variablen aufzurufen, aber es ist fehlgeschlagen:

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

Vielleicht haben Sie einige Ideen dazu?

Vielen Dank.

Alex Netkachov
quelle
Haben Sie versucht, ausgeführt zu werden, vcvarsall.batanstatt zu versuchen, Ihre Umgebung manuell einzurichten?
JohnnyHK
Kein Erfolg. Immer noch "MSB3411: Die Visual C ++ - Komponente" VCBuild.exe "konnte nicht geladen werden."
Alex Netkachov
Übrigens habe ich bessere Ergebnisse mit "C: \ Programme \ Microsoft SDKs \ Windows \ v6.1 \ Bin \ SetEnv.Cmd": Schwerwiegender Fehler C1083: Include-Datei kann nicht geöffnet werden: 'stdint.h': Keine solche Datei oder kein solches Verzeichnis
Alex Netkachov
2
Ich habe gerade endlich bcrypt installiert, was erfordert, auf der 64-Bit-Umgebung von win7 aufzubauen. Es war ein Schmerz im Nacken, sortiert zu werden. In meiner Situation folgte ich den Anweisungen für bcrypt und für node-gyp. Der Clou für mich war die Installation des Microsoft Windows 7 SDK- und .Net 4-Frameworks. Sobald das installiert war (und ich meine Shell neu gestartet hatte), stellte ich fest, dass ich alles über die Installation für bcrypt kompilieren konnte. Ich habe mich nur gefragt, ob Sie das SDK installiert haben. Ich frage, weil Sie es nicht in Ihrer Liste erwähnt haben.
Metalskin
1
Dies wurde am 19.11.2015 veröffentlicht und ES FUNKTIONIERT! (Viele gute Vorschläge zu diesem Thread, aber keine Freude) github.com/nodejs/node-gyp/issues/629#issuecomment-158163655 Die Prozedur installiert Build Tools 2015, nicht VS2012.
dkloke

Antworten:

148

Versuchen Sie das - wird es global einstellen:

npm config set msvs_version 2012 --global
srfrnk
quelle
1
Perfekt! Alle meine Probleme behoben!
Hansmei
2
Ausgezeichnet, ich habe den Fehler erhalten, als ich eine Reihe von Skripten ausgeführt habe, die npm tief im Darm aufgerufen haben. Ich wollte die Skripte nicht ändern, daher war dies die beste Option für mich
Alastair,
2
Dies sollte die empfohlene Antwort sein, die unter Windows 10
William
2
Funktioniert nicht error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Grün
Nur auf einem Windows 10-PC mit VS2017 - Ich habe das VS2017-Setup verwendet, um auch die 2015 VC-Build-Tools zu installieren. dann hat Torazaburos Fix funktioniert :) Eigentlich sieht die Antwort von Catalint unten besser aus, aber ich habe es nicht versucht ...
Sean
143

Um dies ohne VS2010-Installation und nur für 2012 zu tun, setzen Sie das Flag msvs_version:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

gemäß @Jacob Kommentar

npm install --msvs_version=2013 wenn Sie die Version 2013 haben

Alex
quelle
3
Obwohl ich glaube, dass der zweite Befehl auch zwei Bindestriche in seinem Parameter haben sollte - ich habe zwei Bindestriche dafür eingefügt und es hat funktioniert. Dies brachte mich über meine npm-Installationsfehler hinaus - danke!
Dullroar
1
@Dullroar superuser.com/questions/372203/... es für mich mit 1 Schuss arbeitete Achselzucken
Alex
Danke dafür; Der npm installBefehl hat es für mich zum Laufen gebracht. Ein Schuss funktionierte auch für mich.
Seiyria
Es sollte sein --msvs-version = 2012
RaduM
Dies funktionierte erstaunlich mit meiner Windows 7 x64-Installation! Danke Microsoft (dafür, dass du Schwänze bist)!
Blairg23
60

Update v3: https://www.npmjs.com/package/windows-build-tools

npm install --globale Windows-Build-Tools

lädt Visual C ++ Build Tools 2015 herunter und installiert es, das von Microsoft kostenlos zur Verfügung gestellt wird. Diese Tools werden benötigt, um beliebte native Module zu kompilieren. Außerdem wird Python 2.7 installiert, wodurch Ihr Computer und npm entsprechend konfiguriert werden.

Update v2:

node-gyp hat ihre Readme-Datei so aktualisiert, dass sie HOW-TO für Windows enthält

Original:

Sie benötigen nicht das gesamte Visual Studio, sondern können nur die Build-Tools herunterladen

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

Führen Sie cmd aus, um das globale Flag für die Verwendung der Version 2013 zu setzen:

npm config set msvs_version 2013 --global

Danach sollte alles wieder normal sein und Ihre npm-Installation / Node-Gyp-Neuerstellung wird funktionieren

Catalint
quelle
Die Build Tools enthalten keine Platform Toolsets ... Leider scheint es keinen Weg zu geben, Visual Studio zu installieren :( Lesen Sie auch die Installationsanweisungen für Node-Gyp unter Windows: github.com/nodejs/node-gyp
Michael K.
aktualisierte Antwort, um die neue Readme von Node-Gyp aufzunehmen, danke @MichaelK.
Catalint
2
Ich habe VS2015 installiert und diesen Befehl ausgeführt, npm config set msvs_version 2015 --globalder auch funktioniert
JRulle
Ebenso npm config set msvs_version 2015 --globalfunktioniert die Installation von Microsoft Build Tools 2015 und das Ausführen
Jon Onstott
1
Das Ausführen der 'Windows-Build-Tools' wie oben angegeben mit NPM (Node Package Manager) DID funktioniert für mich, jedoch nur, wenn es über Microsoft PowerShell ausgeführt wird . Dies ist ein Windows-Dienstprogramm, das Microsoft seit mehr als 10 Jahren bereitstellt. Es verfügt über die Administratorrechte, die zum Ausführen der Build-Tools erforderlich sind. Suchen Sie PowerShell, klicken Sie mit der rechten Maustaste darauf und führen Sie es als Administrator aus. Beachten Sie, dass das Ausführen der Standard-CMD-Eingabeaufforderung als Administrator möglicherweise auch funktioniert, ich jedoch mit PowerShell erfolgreich war . Das zusätzliche Tooling und die UNIX-ähnliche Befehlsunterstützung sind möglicherweise Teil der Funktionsweise, obwohl die Ausführung als Admin die größere Lösung war.
Michael M
41

füge einfach --msvs_version = 2012 hinzu

node-gyp rebuild --msvs_version=2012

oder

node-gyp configure --msvs_version=2012
node-gyp build 
msulhas
quelle
Gleiche Antwort wie oben.
Blairg23
1
Ich antwortete zuerst, schau dir das Datum an :)
msulhas
21

Ich hatte das gleiche Problem beim Versuch, ein Paket für Node.js zu installieren. Nach ausgiebigem googeln habe ich diesen Walktrough gefunden: https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

Wenn ich diese Schritte ausgeführt hatte, konnte ich "npm install" ohne Probleme verwenden.

Robin Ridderholt
quelle
VIELEN DANK!!! MASSIVE KUDOS ps Sie müssen auch Python zu Ihrem Pfad hinzufügen: stackoverflow.com/questions/4621255/…
Sidonaldson
Wenn Sie Visual Studio bereits installiert haben, funktionieren die Antworten mit den höchsten Stimmen möglicherweise. Wenn Sie sie jedoch überhaupt nicht haben, benötigen Sie diese Antwort. Vielen Dank!
JD Smith
Diese exemplarische Vorgehensweise ist die bisher beste. Trotzdem ist all dieses base64-Problem völlig unnötig und nervig!
Benedikt
Oh ja, das habe ich gebraucht. Bester Spaziergang durch den ich gefunden habe und es funktioniert!
Corin
Ich habe ein Node.js-Projekt mit dem Couchbase SDK für Node, das auf meinem Arbeitscomputer mit Visual Studio 2008, 2010 und 2012 einwandfrei funktioniert. Ich wollte die Installation für "Hobbyisten" ohne Kopien von Visual Studio testen. Ich habe alle Microsoft-Entwicklungstools und SDKs von meinem Heimcomputer deinstalliert und verschiedene "Express" -Optionen ausprobiert. Erst nachdem ich die von TooTallNate dokumentierten Schritte ausgeführt hatte, konnte ich die Couchbase-Binärdateien für Windows erstellen, einschließlich dieses Schritts zum erneuten Binden für den Betrieb als "Desktop" -Anwendung mithilfe von NW.js (ehemals Node-Webkit): 'nw-gyp Rebuild - -target = 0.12.0 '
Rick Rutt
13

Dank @felixrieseberg müssen Sie nur das npm-Paket für Windows-Build-Tools installieren , und schon kann es losgehen.

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

Sie müssen Visual Studio nicht installieren.

Sie müssen Microsoft Build Tools nicht installieren.

Aus dem Repo:

Nach der Installation führt npm automatisch dieses Modul aus, das Visual C ++ Build Tools 2015 herunterlädt und installiert, das von Microsoft kostenlos zur Verfügung gestellt wird. Diese Tools werden benötigt, um beliebte native Module zu kompilieren. Außerdem wird Python 2.7 installiert, wodurch Ihr Computer und npm entsprechend konfiguriert werden.

Windows Vista / 7 erfordert .NET Framework 4.5.1 (Wird von diesem Paket derzeit nicht automatisch installiert)

Beide Installationen sind konfliktfrei, was bedeutet, dass sie nicht mit vorhandenen Installationen von Visual Studio, C ++ Build Tools oder Python in Konflikt geraten.

Ramazan Polat
quelle
1
Du liegst absolut richtig. Ich habe stundenlang VS-, npm- und gyp-Versionen getestet, aber ohne .NET 4.5.1 (genau) gibt es absolut keine Möglichkeit, es zu kompilieren. Dies erklärt auch, warum es mit den meisten VS-Installationen funktioniert, da sie mit vorinstalliertem .NET geliefert werden.
Xan-Kun Clark-Davis
12

Unter Windows 8 funktionierte es für mich mit:

npm install -g node-gyp -msvs_version=2012

dann

npm install -g restify
Amgohan
quelle
1
Ich glaube nicht, dass das Restify- Paket etwas mit der OP-Frage zu tun hat. Restify ist nur eines von mehreren Paketen, die von demselben Problem betroffen sind.
Adelriosantiago
5

Nach den Tagen des Grabens schlug jemand im IRC vor, dass ich versuchen sollte, das zu verwenden

Windows 7.1 SDK Command Prompt

Verknüpfung (Links zu C: \ Windows \ System32 \ cmd.exe / E: ON / V: ON / T: 0E / K "C: \ Programme \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd" ). Ich denke, Sie MÜSSEN das ältere 7.1 SDK (sogar unter Windows 8.1) haben, da die neueren msbuild.exe anstelle von vcbuild.exe verwenden, was node-gyp will, obwohl es zu diesem Zeitpunkt doppelt so alt ist wie node: /

Einmal in dieser Eingabeaufforderung musste ich Folgendes ausführen, um den x86-Kontext zu erhalten, da der Compiler ansonsten einen Fehler bezüglich der Architektur auslöste:

setenv.cmd /Release /x86

DANN konnte ich erfolgreich npm-Befehle ausführen, die versuchten, Node-Gyp zum Neukompilieren von Dingen zu verwenden.

rainabba
quelle
4

Ich hatte den gleichen Isuee und habe die ganze Magie oben gemacht. Das einzige, was die Magie für mich gemacht hat, ist von https://github.com/atom/atom/issues/2435

"Weil die --msvs_version = 2013 nicht an Node-Gyp übergeben wird, wenn sie vom Build-Skript ausgeführt wird. Setzen Sie die env-Variable GYP_MSVS_VERSION = 2013 und sie sollte danach funktionieren."

Knall! es funktionierte

Amitgur
quelle
3

Unter Windows Dies hat mir geholfen: (Credits gehen an) https://github.com/TooTallNate/node-gyp/wiki/Updating-npm%27s-bundled-node-gyp Ich habe MINGW32 ausprobiert, aber ohne Erfolg.

auf cmd.exe

$ cd "C:\Program Files\nodejs\node_modules\npm"
$ npm install -g node-gyp@latest
Danielpopa
quelle
1
Wenn dies für Sie fehlgeschlagen ist, überprüfen Sie, ob Sie die Umgebungsvariable PYTHON = c: \ Python27 \ python.exe und stackoverflow.com/a/15937635/2873481
Vladimir Vukanac
npm install -g node-gyp @ spätestens?
Alexander Mills
2

Für Windows 8 64-Bit, Installation von zmq und protobuf, funktionierte Folgendes für mich: Installieren von Visual Studio 2012 In der Befehlszeile:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf
ihm
quelle
Visual Studio 2012 enthält auch die 'Developer Command Prompt for VS2012', sodass Sie Ihre env PATH-Variable nicht anpassen müssen
strider
1

Ich denke, die Lösung besteht darin, Microsoft Windows SDK für Server 2008 mit .net Framework 3.5 herunterzuladen

oder installieren Sie einfach Visual Studio 2008 .

Das Problem ist, dass Windows Builds Node-Gyp die Datei vcbuid.exe ausführt und sie aus irgendeinem Grund nicht finden kann.

Vielen Dank

Hubert Boma Manilla
quelle
2
Der Grund dafür, dass VCBuild nicht gefunden wurde, ist, dass es 2010 durch MSBuild ersetzt wurde, laut codeproject.com/Articles/562386/…
UnPlan2ned
Siehe meine Antwort unten. vcbuild.exe ist erforderlich, aber viele Umgebungsvariablen müssen festgelegt werden, und das Node-Gyp-Projekt dokumentiert sie nicht.
rainabba
1
  1. Installieren Sie Python 2.7 (nicht 3.x)
  2. Fügen Sie den Pfad zu dem Verzeichnis hinzu, das vcbuild.exeIhre Umgebungsvariable enthältPATH
  3. Wenn Sie es brauchen, vcbuild.exeholen Sie es sich hier https://github.com/kin9puppy/vcbuildFixForNode
kingPuppy
quelle
0

Ich hatte auch viele Probleme beim Kompilieren von nodejs zmq.

Fügen Sie das Problem mit vcbuild.exe einfach dem Pfad hinzu

Für andere Probleme könnte ich nur mit kompilieren Windows 7.1 SDK Command Prompt

(Menüprogramme -> Microsoft Windows SDK v7.1 -> Windows 7.1 SDK-Eingabeaufforderung)

Und von der Eingabeaufforderung:

npm install zmq

Das funktioniert :)

Kleyson Rios
quelle
0

Nach einem langen Kampf habe ich meine Knotenarchitektur auf x86 umgestellt und es hat wie ein Zauber funktioniert.

user3035156
quelle
1
Können Sie näher erläutern, wie Sie zu x86 gewechselt sind?
Arman Ortega
0

In cmd setzen Sie den Visual Studio-Pfad abhängig von Ihrer Version als

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

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

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

Führen Sie in node-master (ursprüngliches Knotenmodul, das von git heruntergeladen wurde) vcbuild.bat mit Administratorrechten aus. vcbild.bat generiert Windows-bezogene Abhängigkeiten und fügt den Ordnernamen Release in Node-Master hinzu

Sobald es ausgeführt wird, dauert es einige Zeit, um die Dateien zu erstellen.

Verwenden Sie dann in dem Verzeichnis mit der .gyp-Datei den Befehl

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

Dadurch werden alle Abhängigkeiten erstellt.

Niket
quelle
0

Ich habe dieses Problem unter Windows 8 und Windows 10 Pro mit diesem Tutorial gelöst. Ich versuche oft, dieses Problem mit vielen verschiedenen Lösungen zu lösen, habe aber nur damit gearbeitet: http://www.serverpals.com/blog/building-using-node-gyp-with-visual-studio-express -2015-on-windows-10-pro-x64 Ich stelle fest, dass ich Nodist nicht zur Steuerung der Knotenversion wie in diesem Tutorial verwendet habe. Ich verwende NVM und habe gut funktioniert. Ich teste dieses Tutorial nicht mit Nodist. Ich habe Knoten 5.2.0 verwendet.

Marco Blos
quelle