L’installation de npm échoue avec l’erreur C2373 avec la mise à jour vs2015 3

Après avoir réinstallé ma machine avec Windows 10, en le configurant avec Visual Studio 2015 j’ai rencontré cette erreur lors de l’installation de mes référentiels git:

npm install échoue sur différents projets avec:

 ... C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.c(34): error C2373: "__pfnDliNotifyHook2": [...] 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:\Program Files\nodejs\node_modules\npm\node_modules\node-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:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\...\node_modules\buffertools gyp ERR! node -v v4.4.7 gyp ERR! node-gyp -v v3.3.1 gyp ERR! not ok 

Cette erreur rest en relation avec npm , node-gyp et Visual Studio 2015 et est déjà corrigée dans node-gyp@3.4.0 , mais npm pointe toujours vers une ancienne version. Comme je contourner ce problème, je peux proposer ceci:

  1. Allez dans votre dossier où npm est installé, par exemple: C:\Program Files\nodejs\node_modules\npm

  2. Ouvrir: package.json

  3. Supprimer l’entrée pour node-gyp dans bundleDependencies

  4. Bump numéro de version à 3.4.0 pour node-gyp dans les dependencies

  5. Faire un npm i dans ce répertoire pour installer node-gyp@3.4.0 pour résoudre le problème

Les problèmes liés à GitHub peuvent être trouvés ici:

  1. nodejs / node # 7286
  2. nodejs / node-gyp # 956
  3. npm / npm # 13199
  4. npm / npm # 13200

Ou mettre à jour npm:

 npm install npm -g 

Une solution alternative qui n’implique pas de jouer avec l’installation npm est d’exécuter

 SET CL=-DDELAYIMP_INSECURE_WRITABLE_HOOKS %CL% 

avant de npm install