Impossibile installare i moduli nodo che richiedono la compilazione su Windows 7 x64 / VS2012


192

Non riesco a installare nessuno dei moduli che richiedono la compilazione. Tutti falliscono con il seguente errore:

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

Il mio ambiente:

  • Windows 7 Enterprise x64, versione 6.1.7601
  • nodo x86 0.8.16
  • npm 1.2.0
  • node-gyp 0.8.2
  • Visual Studio 2012 e numerosi pacchetti

Variabili d'ambiente correlate:

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 INCLUDE, LIB, LIBPATH, ecc.

Ho fatto una breve indagine sul problema e ho scoperto che con la seguente configurazione la compilazione manuale (chiamando direttamente VCBuild.exe e msbuild.exe) ha avuto successo per git clonato 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

Ho provato a chiamare node-gyp con le stesse variabili e non è riuscito:

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

Forse avrai qualche idea a riguardo?

Grazie.


Hai provato a correre vcvarsall.batinvece di provare a configurare il tuo ambiente manualmente?
JohnnyHK,

Nessun successo. Ancora "MSB3411: Impossibile caricare il componente Visual C ++" VCBuild.exe "."
Alex Netkachov,

A proposito, ho risultati migliori con "C: \ Programmi \ Microsoft SDKs \ Windows \ v6.1 \ Bin \ SetEnv.Cmd": errore irreversibile C1083: impossibile aprire il file include: 'stdint.h': nessun file o directory
Alex Netkachov,

2
Ho finalmente ottenuto l'installazione di bcrypt che richiede di basarmi sull'ambiente win7 a 64 bit, è stato un dolore al collo essere risolto. Con la mia situazione ho seguito le istruzioni per bcrypt e per node-gyp. Il clincher per me era l'installazione dell'SDK di Microsoft Windows 7 e del framework .Net 4. Una volta installato (e dopo aver riavviato la shell) ho scoperto che potevo compilare tutto tramite l'installazione per bcrypt. Quindi mi stavo chiedendo se hai installato l'SDK? Chiedo come non l'hai menzionato nella tua lista.
Metalskin,

1
Questo è stato pubblicato il 19-11-2015 e FUNZIONA! (Molti buoni suggerimenti su questo thread ma nessuna gioia) github.com/nodejs/node-gyp/issues/629#issuecomment-158163655 La procedura installa Build Tools 2015, non VS2012.
dkloke il

Risposte:


148

Prova questo: lo imposterà a livello globale:

npm config set msvs_version 2012 --global

1
Perfetto! Risolti tutti i miei problemi!
Hansmei,

2
Eccellente, stavo ottenendo l'errore durante l'esecuzione di una serie di script che invocava npm in profondità nelle viscere. Non volevo modificare gli script, quindi questa è stata l'opzione migliore per me
Alastair,

2
Questa dovrebbe essere la risposta raccomandata, ha funzionato come un incantesimo su Windows 10
William,

2
Non funziona error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Verde

solo su un PC Windows 10 con VS2017: ho utilizzato l'installazione VS2017 per installare anche gli strumenti di compilazione VC 2015. allora la correzione di torazaburo ha funzionato :) in realtà la risposta del catalizzatore qui sotto sembra migliore ma non l'ho provata ....
Sean

143

Per farlo senza l'installazione di VS2010 e solo il 2012, imposta il flag msvs_version:

node-gyp rebuild --msvs_version=2012

npm install <module> --msvs_version=2012

come da commento @Jacob

npm install --msvs_version=2013 se hai la versione 2013


3
Anche se credo che il secondo comando dovrebbe avere anche due trattini sul suo parametro - ho inserito due trattini per farlo e ha funzionato. Questo mi ha fatto superare i miei errori di installazione di npm - grazie!
Dullroar,

1
@Dullroar superuser.com/questions/372203/… ha funzionato per me con 1 trattino scrollata di spalle
Alex

Grazie per questo; il npm installcomando ha funzionato per me. Un trattino ha funzionato anche per me.
Seiyria,

Dovrebbe essere --msvs-version = 2012
RaduM,

Questo ha funzionato meravigliosamente con la mia installazione di Windows 7 x64! Grazie Microsoft (per essere cazzi)!
Blairg23,

60

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

npm install --global windows-build-tools

scarica e installa Visual C ++ Build Tools 2015, fornito gratuitamente da Microsoft. Questi strumenti sono necessari per compilare moduli nativi popolari. Installerà anche Python 2.7, configurando la tua macchina e npm in modo appropriato.

Aggiornamento v2:

node-gyp ha aggiornato il proprio file Leggimi per includere HOW-TO per Windows

Originale:

Non è necessario per l'intero studio visivo, puoi scaricare solo gli strumenti di compilazione

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

eseguire cmd per impostare il flag globale per utilizzare la versione 2013:

npm config set msvs_version 2013 --global

dopo questo tutto dovrebbe tornare alla normalità e la ricostruzione di npm install / node-gyp funzionerà


Gli strumenti di compilazione non includono gli strumenti della piattaforma ... purtroppo non sembra esserci alcun modo per installare Visual Studio :( leggere anche le istruzioni di installazione di node-gyp su Windows: github.com/nodejs/node-gyp
Michael K.

risposta aggiornata per includere il nuovo readme da node-gyp, grazie @MichaelK.
catalizzatore

2
Ho installato VS2015 ed eseguito questo comando npm config set msvs_version 2015 --globalche funziona anche
JRulle

Allo stesso modo, l'installazione di Microsoft Build Tools 2015 e l'esecuzione delle npm config set msvs_version 2015 --globalopere
Jon Onstott

1
Eseguire 'windows-build-tools' come indicato sopra usando NPM (Node Package Manager) DID funziona per me, ma solo quando lo eseguo tramite Microsoft PowerShell . Questa è un'utilità di Windows fornita da Microsoft da oltre 10 anni. Ha i diritti amministrativi richiesti per eseguire gli strumenti di costruzione. Individua PowerShell, fai clic destro su di esso ed esegui come amministratore. Si noti che l'esecuzione del CMD prompt di serie come Admin può anche lavoro, ma ho avuto successo con PowerShell . Gli strumenti extra e il supporto comandi simile a UNIX possono essere parte del motivo per cui funziona, sebbene eseguirlo come amministratore fosse la soluzione più grande.
Michael M,

41

aggiungi --msvs_version = 2012

node-gyp rebuild --msvs_version=2012

o

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

Stessa risposta come sopra.
Blairg23,

1
Ho risposto prima, guarda la data :)
msulhas,

21

Ho avuto lo stesso problema durante il tentativo di installare un pacchetto per Node.js. Dopo alcuni approfonditi googeling ho trovato questo walktrough: https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

Dopo aver seguito questi passaggi ho potuto utilizzare "npm install" senza problemi.


GRAZIE!!! KUDOS MASSIVE ps hai anche aggiungere Python al percorso: stackoverflow.com/questions/4621255/...
sidonaldson

Se hai già installato Visual Studio, le risposte più votate potrebbero funzionare, tuttavia se non lo hai affatto hai bisogno di questa risposta. Grazie!
JD Smith,

Questa procedura dettagliata è la migliore fino ad ora. Tuttavia, tutto questo problema di base64 è totalmente inutile e fastidioso!
Benedikt,

Oh sì, questo è quello di cui avevo bisogno. La migliore passeggiata che ho trovato e funziona!
Corin,

Ho un progetto Node.js usando Couchbase SDK per Node che si adatta perfettamente al mio computer di lavoro, che ha Visual Studio 2008, 2010 e 2012. Volevo testare l'installazione per "hobbisti" senza alcuna copia di Visual Studio. Ho disinstallato tutti gli strumenti di sviluppo Microsoft e gli SDK dal mio computer di casa e ho provato varie opzioni "Express". Solo dopo aver seguito questi passaggi documentati da TooTallNate sono stato in grado di creare i binari di Couchbase per Windows, incluso questo passaggio per ricollegarlo all'operazione come applicazione "desktop" usando NW.js (precedentemente node-webkit): 'nw-gyp rebuild - -target = 0.12.0 '
Rick Rutt

13

Grazie a @felixrieseberg , devi solo installare il pacchetto npm di windows-build-tools e sei a posto.

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

Non è necessario installare Visual Studio.

Non è necessario installare Microsoft Build Tools.

Dal repository:

Dopo l'installazione, npm eseguirà automaticamente questo modulo, che scarica e installa Visual C ++ Build Tools 2015, fornito gratuitamente da Microsoft. Questi strumenti sono necessari per compilare moduli nativi popolari. Installerà anche Python 2.7, configurando la tua macchina e npm in modo appropriato.

Windows Vista / 7 richiede .NET Framework 4.5.1 (attualmente non installato automaticamente da questo pacchetto)

Entrambe le installazioni sono prive di conflitti, il che significa che non interferiscono con le installazioni esistenti di Visual Studio, C ++ Build Tools o Python.


1
Hai assolutamente ragione. Ho provato le versioni VS, npm e gyp per ore, ma senza .NET 4.5.1 (esattamente) non c'è assolutamente alcun modo per farlo compilare. Ciò spiega anche perché funzionerà con la maggior parte delle installazioni VS, poiché vengono fornite con .NET pre-bundle.
Xan-Kun Clark-Davis,

12

su Windows 8, ha funzionato per me usando:

npm install -g node-gyp -msvs_version=2012

poi

npm install -g restify

1
Non penso che il pacchetto restify abbia qualcosa a che fare con la domanda OP, restify è solo uno dei numerosi pacchetti interessati dallo stesso problema.
adelriosantiago,

5

Dopo GIORNI di scavo, qualcuno su IRC mi ha suggerito di provare a usare il

Windows 7.1 SDK Command Prompt

Collegamento (collegamenti a C: \ Windows \ System32 \ cmd.exe / E: ON / V: ON / T: 0E / K "C: \ Programmi \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd" ). Penso che DEVI avere il vecchio SDK 7.1 (anche su Windows 8.1) perché i più recenti usano msbuild.exe invece di vcbuild.exe che è ciò che vuole node-gyp anche se a questo punto è due volte più vecchio del nodo: /

Una volta in quel prompt, ho dovuto eseguire quanto segue per ottenere il contesto x86 perché il compilatore stava lanciando come errore altrimenti sull'architettura:

setenv.cmd /Release /x86

POI sono stato in grado di eseguire con successo i comandi npm che stavano cercando di usare node-gyp per ricompilare le cose.


4

Avevo lo stesso isuee e ho fatto tutta la magia sopra, l'unica cosa che ha fatto la magia per me è https://github.com/atom/atom/issues/2435

"Perché --msvs_version = 2013 non viene passato a node-gyp quando viene eseguito dallo script di compilazione. Imposta la variabile env GYP_MSVS_VERSION = 2013 e dovrebbe funzionare dopo."

Scoppio! ha funzionato


3

Su Windows Questo mi ha aiutato: (crediti va) https://github.com/TooTallNate/node-gyp/wiki/Updating-npm%27s-bundled-node-gyp Ho provato MINGW32, ma senza successo.

sopra cmd.exe

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

1
se questo non è riuscito per voi, Assegno avete variabile d'ambiente PITONE = c: \ Python27 \ python.exe e stackoverflow.com/a/15937635/2873481
Vladimir Vukanac

npm install -g node-gyp @ latest?
Alexander Mills,

2

Per Windows 8 a 64 bit, installando zmq e protobuf, per me ha funzionato: Installa Visual Studio 2012 sulla riga di comando:

SET VisualStudioVersion=11.0
npm install zmq
npm install protobuf

Visual Studio 2012 include anche 'Prompt dei comandi per sviluppatori per VS2012', quindi non è necessario personalizzare la variabile ENV PATH
strider

1

Penso che la soluzione sia scaricare installare Microsoft Windows SDK per server 2008 con .net framework 3.5

oppure installa Visual Studio 2008 .

Il problema è per Windows build node-gyp esegue il file vcbuid.exe e per qualche motivo non riesce a trovarlo.

Grazie



2
Il motivo per cui non ha trovato VCBuild è che è stato sostituito con MSBuild nel 2010, secondo codeproject.com/Articles/562386/…
UnPlan2ned,

Vedi la mia risposta qui sotto. vcbuild.exe è richiesto ma è necessario impostare molte variabili di ambiente e il progetto node-gyp non le documenta.
Rainabba,


0

Ho anche avuto molti problemi a compilare nodejs zmq.

Per il problema con vcbuild.exe, basta aggiungerlo al PERCORSO

Per altri problemi ho potuto compilare solo usando Windows 7.1 SDK Command Prompt

(Programmi menu -> Microsoft Windows SDK v7.1 -> Prompt dei comandi dell'SDK di Windows 7.1)

E dal prompt:

npm install zmq

Funziona :)


0

Dopo una lunga lotta, ho cambiato l'architettura del mio nodo in x86 e ha funzionato come un incantesimo.


1
puoi approfondire come sei passato a x86?
Arman Ortega,

0

in cmd imposta il percorso di Visual Studio a seconda della tua versione come

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

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

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

In node-master (modulo nodo originale scaricato da git) eseguire vcbuild.bat con privilegi di amministratore. vcbild.bat genererà dipendenze relative a Windows e aggiungerà il nome della cartella Release in node-master

Una volta eseguito, ci vorrà del tempo per creare i file.

Quindi nella directory con il file .gyp usa il comando

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

questo costruirà tutte le dipendenze.


0

Ho risolto questo problema su Windows 8 e Windows 10 Pro con questo tutorial. Provo molte volte a risolvere questo problema con molte soluzioni diverse, ma ho lavorato solo per me con questo: http://www.serverpals.com/blog/building-using-node-gyp-with-visual-studio-express -2015-on-windows-10-pro-x64 Ho notato che non ho usato nodist per controllare la versione del nodo come questo tutorial, uso NVM e ha funzionato bene, non testare questo tutorial con nodist. Ho usato il nodo 5.2.0.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.