web-dev-qa-db-fra.com

l'installation de npm qui nécessite node-gyp échoue sous Windows

J'ai un projet NPM qui utilise bufferutils et utf-8-validate, les deux nécessitant l'installation de node-gyp. Quand je fais npm install, j'obtiens l'erreur suivante:

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

Auparavant, il échouait parce que Python 2.7 n'était pas installé, c'est maintenant ce qu'il est. Cela me cause des maux de tête. Que dois-je faire à ce sujet?

22
Marek Lisý

La réponse ci-dessous correspond à une installation manuelle, mais il existe un moyen beaucoup plus simple: l'installation automatique.

Ouvrez Powershell en tant qu'administrateur et exécutez npm install -g windows-build-tools.

L'installation prend du temps mais ça a fonctionné comme un charme pour moi!

57
Manuel Beaudru

J'ai trouvé cette solution brillante sur GitHub:

  1. Votre système d'exploitation DOIT être Windows
  2. Vérifiez que python est dans votre chemin en écrivant python --version dans la console. Si non alors
  3. Téléchargez python 2.7 (je recommande chocolatey (choco install python2 -y)) et ajoutez python.exe à votre variable PATH.
  4. Vous n'êtes pas sur Windows 7? Sauter 5 et 6.
  5. Vérifiez que .NET 4.5.1+ est installé . Si non alors
  6. Téléchargez et installez .NET 4.5.1 (.NET 4.5.2 fonctionnera également très bien)
  7. Télécharger Aperçu technique de Microsoft Visual C++ Build Tools 2015
  8. Utilisez une installation personnalisée. Installez le SDK Windows 8.1 si vous ne l’avez pas déjà fait. Apparemment, peu importe le système d'exploitation utilisé. Vous avez juste besoin du SDK Windows 8.1.
  9. Définissez la variable msvs_version npm config sur 2015: npm config -g set msvs_version 2015
  10. Faites npm i dans n'importe quel projet avec node-gyp comme dépendance sans voir de messages d'erreur étranges

Mes cauchemars sont partis!

17
Marek Lisý

Après avoir passé de nombreuses heures à essayer d'installer ZeroMQ sur Winturds 7 et 10 (y compris l'installation ridicule et complètement inutile de .NET et Visual Studio), il était en fait plus facile de créer un disque de démarrage USB Ubuntu et d'installer node et ZeroMQ . Maintenant, je peux réellement faire un travail productif.

0
J Slick

Je rencontrais ce problème lors de la mise à jour d'une ancienne version de noeud à noeud v12. Il y avait un problème particulier avec la bibliothèque bcrypt. Je viens de désinstaller v12 et d'installer v10 et tout a fonctionné.

0
BogutBeastMode