web-dev-qa-db-fra.com

erreur d'installation npm: "Les outils de génération de la v120 (Platform Toolset = 'v120') sont introuvables"

Lors de l'exécution d'un npm install nécessitant une reconstruction par noeud-gyp, l'erreur de construction suivante a été générée:

MSB8020: Les outils de génération de v120 (Platform Toolset = 'v120') ne peuvent pas prendre en charge être trouvé. Pour compiler en utilisant les outils de compilation v120, veuillez installer v120 construire des outils. Vous pouvez également effectuer une mise à niveau vers le Visual actuel Studio en sélectionnant le menu Projet ou en cliquant avec le bouton droit de la souris sur solution, puis en sélectionnant "solution Retarget"

Informations système

  • Windows 10 (x64)
  • Visual Studio 2015
  • noeud v0.12.7
  • npm v2.11.3
  • node-gyp v2.0.1
18
2Toad

tl; dr

Utilisez le paramètre msvs_version: npm install --msvs_version=2015

Que faire si le paramètre msvs_version ne fonctionne pas?

Si le paramètre msvs_version ne fonctionne pas, c'est probablement parce qu'aucun environnement de génération Visual C++ 2015 n'est installé.

Installer l'environnement de construction Visual C++

Option 1: Visual Studio 2015

  1. Au cours de l'installation de VS2015, sélectionnez "Personnalisé". Ou, si vous avez déjà installé VS2015, allez dans Windows "Désinstaller ou modifier un programme"> sélectionnez VS2015 dans la liste> cliquez sur "Modifier"> cliquez sur "Modifier".
  2. Cochez l'option "Outils communs pour Visual C++ 2015" sous "Langages de programmation"> "Visual C++".
  3. Terminez l'installation de VS2015

Option 2: outils de génération Visual C++ 2015

Au lieu de VS2015, vous pouvez installer le Visual C++ Build Tools 2015 publié par Microsoft:

  1. Au cours de l'installation de VC++, sélectionnez "Personnalisé".
  2. Vérifiez les options "Windows 8.1 SDK" et "Windows 10 SDK"
  3. Terminez l'installation de VC++

Utilisez msvs_version

Maintenant qu'un environnement de construction Visual C++ 2015 a été installé, vous pouvez indiquer à npm de l'utiliser via le paramètre msvs_version:

  1. Ouvrez PowerShell
  2. Utilisez le paramètre msvs_version: npm install --msvs_version=2015

Options de configuration (non requis)

Au lieu de spécifier msvs_version à l'invite de commande, vous pouvez éventuellement configurer npm de manière à toujours inclure le paramètre msvs_version en l'ajoutant à votre fichier npmrc ou package.json:

npmrc

Ouvrez PowerShell et exécutez npm config set msvs_version 2015, qui ajoutera ce paramètre à votre fichier utilisateur npmrc. Désormais, chaque fois que vous exécuterez npm install, en tant que cet utilisateur, le paramètre msvs_version=2015 sera automatiquement inclus.

vous pouvez éventuellement inclure l'indicateur global npm config set msvs_version 2015 --global si vous prévoyez de vous connecter avec différents comptes Windows et si vous souhaitez que ce paramètre s'applique à tous les comptes de la machine.

package.json

Modifiez le fichier package.json de votre projet pour inclure:

"config": {
  "msvs_version": 2015
}

Désormais, à chaque fois que vous exécuterez npm install, pour ce projet, le paramètre msvs_version=2015 sera automatiquement inclus.


Révisions d'article

  1. Étapes révisées après une enquête approfondie inspirée par le commentaire de Chuck sur le jeu d'outils v120 (merci @ChuckWalbourn)} _
  2. _ {Options de configuration ajoutées} _
  3. Option ajoutée des outils de construction VC++
  4. _ {Lien mis à jour des outils de compilation VC++ pour la version officielle}
44
2Toad

Je voulais ajouter un commentaire à la réponse de 2Toad, mais stackoverflow ne me laisse pas… .. Vous pouvez définir la version globale msvs_version à l'aide de cette commande:

npm config set msvs_version 2015 --global

Cela vous évite de le placer dans chaque objet de configuration de projets.

4
user2129024

Je vais partager cette réponse car aucun des autres correctifs n'a résolu mon problème. J'avais les mêmes erreurs mais en paramétrant msvs:

npm install --msvs_version=2015 

ne résolvait pas le problème. Je pouvais voir qu'il cherchait le jeu d'outils au mauvais endroit, peu importe ce que je faisais.

Longue histoire, j'ai appris que MSBuild est maintenant fourni avec Visual Studio et non plus .NET. Bien sûr, j'avais cette entrée dans la variable PATH:

C:\Windows\Microsoft.NET\Framework\v4.0.30319;

et par conséquent, la mauvaise version (ancienne) de MSBuild a été appelée. J'ai supprimé cette entrée et ajouté le chemin suivant, pertinent pour VS2015:

C:\Program Files (x86)\MSBuild\14.0\Bin\

Problème résolu.

2
spryce

Je passe déjà 2 jours à installer toutes les versions de VS ...

npm install oracledb --msvs_version=2015

Renvoie toutes les erreurs:

[..]node-gyp\6.9.1\include\node\v8.h(18): fatal error C1083[..]

En utilisant 

npm install oracledb --msvs_version=2013

Renvoie beaucoup d'avertissements, compile mais ne fonctionne pas correctement après.

[..]warning C4995: 'v8::Value::ToUint32'[..]

C'est ma pire expérience avec un module NPM. Quelle perte de temps :/

1
Wifsimster

Définir la version sur 2015 ne m'a pas aidé. Essayez de le régler sur 2013 à la place:

npm config set msvs_version 2013

ou

ensemble de configuration npm msvs_version 2015

0
tornord