2016-02-09 21 views
13

Ho un progetto NPM che utilizza bufferutils e utf-8-validate, entrambi che richiedono node-gyp per installarli. Quando faccio npm install, ottengo errore seguente:installazione npm che richiede node-gyp non riuscita su Windows

> [email protected] install C:\Users\Marek\WEB\moje-skoly\web-app\node_modules\bufferutil      
> node-gyp rebuild                        


C:\Users\Marek\WEB\moje-skoly\web-app\node_modules\bufferutil {git}{hg}           
{lamb} if not defined npm_config_node_gyp (node "C:\Users\Marek\AppData\Roaming\npm\node_modules\npm\bin\node-g 
yp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild) else (node "" rebuild)       
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.  
    bufferutil.cc                         
C:\Users\Marek\.node-gyp\5.1.1\include\node\v8.h(18): fatal error C1083: Cannot open include file: 'stddef.h': 
No such file or directory [C:\Users\Marek\WEB\moje-skoly\web-app\node_modules\bufferutil\build\bufferutil.vcx 
proj]                           
gyp ERR! build error                       
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1   
gyp ERR! stack  at ChildProcess.onExit (C:\Users\Marek\AppData\Roaming\npm\node_modules\npm\node_modules\nod 
e-gyp\lib\build.js:276:23)                      
gyp ERR! stack  at emitTwo (events.js:87:13)                 
gyp ERR! stack  at ChildProcess.emit (events.js:172:7)              
gyp ERR! stack  at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)     
gyp ERR! System Windows_NT 10.0.10586                   
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Marek\\AppData\\Roaming\\npm\\node_modules\\ 
npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"              
gyp ERR! cwd C:\Users\Marek\WEB\moje-skoly\web-app\node_modules\bufferutil          
gyp ERR! node -v v5.1.1                       
gyp ERR! node-gyp -v v3.2.1                      
gyp ERR! not ok                         
npm WARN install:[email protected] [email protected] install: `node-gyp rebuild`         
npm WARN install:[email protected] Exit status 1      

In precedenza non è riuscito a causa di Python 2.7 non installato, ora è questo. Mi sta causando mal di testa. Cosa dovrei fare per questo?

risposta

15

ho trovato questo brilliant solution su GitHub:

  1. Il vostro sistema operativo deve essere Windows
  2. Controllare che pitone è nel tuo percorso da scrittura python --version nella console. In caso contrario,
  3. Scaricare python 2.7 (si consiglia chocolatey (choco install python2 -y)) e aggiungere python.exe alla variabile PATH.
  4. Non sei su Windows 7? Salta 5 e 6.
  5. Check that you have .NET 4.5.1+ installed. Se poi non
  6. Download and install .NET 4.5.1 (NET 4.5.2 sarà anche funzionano bene)
  7. Scarica Microsoft Visual C++ Build Tools 2015 Technical Preview
  8. Utilizzare Installazione personalizzata. Installa l'SDK di Windows 8.1 se non lo hai già fatto. Apparentemente, non importa quale sistema operativo stai utilizzando. Hai solo bisogno dell'SDK di Windows 8.1.
  9. Impostare il NPM config msvs_version variabile al 2015: npm config -g set msvs_version 2015
  10. fare npm i in quello che in assoluto del progetto con il nodo-gyp come dipendenza senza vedere i messaggi di errore strani

miei incubi sono spariti!

+7

questo è il motivo per cui l'utente di Windows non è soddisfatto della ricostruzione di node-gyp. La soluzione brillante in sé è troppo grande. Insoddisfatto del nodegyp Crap – Prasad

+0

Naturalmente, ma è un tuo problema avere codice C++ in un'applicazione npm. La compilazione C è sempre stata un mal di testa ... Meglio non dipendere affatto dal codice C++. –

+1

nodegyp su windows = schifezza infelice 80% – Prasad

33

La risposta accettata indica un'installazione manuale, ma c'è un modo molto più semplice: l'installazione automatica.

Aprire PowerShell come amministratore ed eseguire npm install -g windows-build-tools.

L'installazione richiede tempo ma ha funzionato come un fascino per me!