Pytanie instalacja npm wymagająca węzła-gyp kończy się niepowodzeniem w systemie Windows


Mam projekt NPM, który używa bufferutils i utf-8-validate, oba wymagające węzła-gyp, aby je zainstalować. Kiedy robię npm installPojawia się następujący błąd:

> bufferutil@1.2.1 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:bufferutil@1.2.1 bufferutil@1.2.1 install: `node-gyp rebuild`                                 
npm WARN install:bufferutil@1.2.1 Exit status 1                       

Wcześniej nie powiodło się, ponieważ Python 2.7 nie został zainstalowany, teraz jest to. To powoduje mi bóle głowy. Co mam z tym zrobić?


14
2018-02-09 13:17


pochodzenie




Odpowiedzi:


Poniższa odpowiedź oznacza ręczną instalację, ale jest o wiele prostszy sposób: automatyczna instalacja.

Otwórz pakiet Powershell jako administrator i uruchom npm install -g windows-build-tools.

Instalacja wymaga czasu, ale dla mnie zadziałała jak urok!


42
2018-03-10 08:45





znalazłem to genialne rozwiązanie na GitHub:

  1. Twój OS MUSI być systemem Windows
  2. Sprawdź, czy python jest na twojej ścieżce, pisząc python --version w konsoli. Jeśli nie wtedy
  3. Pobierz python 2.7 (polecam czekoladowy (choco install python2 -y)) i dodaj python.exe do zmiennej PATH.
  4. Nie jesteś w systemie Windows 7? Pomiń 5 i 6.
  5. Sprawdź, czy masz zainstalowaną .NET 4.5.1+. Jeśli nie wtedy
  6. Pobierz i zainstaluj .NET 4.5.1 (.NET 4.5.2 również działa dobrze)
  7. Pobieranie Microsoft Visual C ++ Build Tools 2015 Przegląd techniczny 
  8. Użyj instalacji niestandardowej. Zainstaluj zestaw SDK systemu Windows 8.1, jeśli jeszcze go nie masz. Wygląda na to, że nie ma znaczenia, z jakiego systemu operacyjnego korzystasz. Potrzebujesz tylko zestawu SDK systemu Windows 8.1.
  9. Ustaw zmienną konfiguracyjną msms_version na NPM na 2015: npm config -g set msvs_version 2015
  10. Zrobić npm i w każdym projekcie z węzłem-gyp jako zależnością bez zobaczenia dziwnych komunikatów o błędach

Moje koszmary już nie ma!


16
2018-02-09 13:17



właśnie dlatego użytkownik systemu Windows nie jest zadowolony z przebudowania węzła-gyp. Samo genialne rozwiązanie jest zbyt duże. Niezadowolony z Nodegyp Crap - Prasad
Oczywiście, ale twój problem ma kod C ++ w aplikacji npm. Kompilowanie C zawsze było bólem głowy ... Lepiej byłoby nie polegać na kodzie C ++. - Marek Lisý
nodegyp na windows = Nieszczęśliwy bzdura 80% - Prasad
Narzędzia do kompilacji można znaleźć tutaj: microsoft.com/en-us/download/details.aspx?id=48159 - Bas Slagter
Dla mnie (Windows 10 node 6.2.0), npm config -g set msvs_version 2013 pracował kiedy 2015 i 2012 nie (zainstalowałem VS 2013, 2012 i 2015) - phil_lgr