web-dev-qa-db-fra.com

Code Visual Studio pour utiliser la version de noeud spécifiée par NVM

Est-il possible que VS Code utilise la version de noeud spécifiée par NVM? 

J'ai 6.9.2 installé localement. Même après le passage à une autre version, à partir du terminal OS X (et non du terminal VS Code), après le redémarrage du VS Code, VS Code reste affiché avec 6.9.2.

Terminal OS X

MacBook-Pro-3:~ mac$ node -v
v7.8.0

VS Code Terminal

MacBook-Pro-3:QB-Invoice-API mac$ node -v
v6.9.2
23
Aseem Gautam

La solution consiste à définir l'alias default. Dans le terminal OS exécuter - 

nvm alias default 7.8.0

Ouvrez le vscode, exécutant maintenant node -v renvoie 7.8.0 

Il semble que vscode utilise cette valeur (alias par défaut) et non la version du noeud définie par nvm use X.X.X

Mise à jour (12/04/2018) - Cette solution pourrait ne pas fonctionner pour tout le monde. Veuillez voir ci-dessous les réponses pour d'autres solutions. 

28
Aseem Gautam

ajoutez runtimeExecutable à votre .vscode/launch.json comme ceci

{
  "type": "node",
  "request": "launch",
  "name": "App",
  "program": "${workspaceRoot}/index.js",
  "runtimeExecutable": "${env:HOME}/.nvm/versions/node/v6.9.2/bin/node"
}
22

Dans VS Code, accédez à votre fichier launch.json et ajoutez l'attribut runtimeVersion dans les configurations, comme indiqué ci-dessous. (Dans cet exemple, nous supposons que 4.8.7 est déjà installé avec nvm)  

{
"version": "<some-version>",
"configurations": [
    {
        "type": "node",
        "runtimeVersion": "4.8.7", // If i need to run node 4.8.7
        "request": "launch",
        "name": "Launch",
        "program": "${workspaceFolder}/sample.js"
    }
]}
14
Sm Srikanth

Le même problème me empêchait de conserver la version de mon nœud spécifiée dans NVM dans mon environnement OS X, non seulement avec VSCode, mais également avec Atom Editor (en utilisant le paquet platformio-ide-terminal pour la gestion du terminal intégré qu'il contient). Aucune des suggestions des réponses précédentes n'a fonctionné pour moi, mis à part que je n'utilise pas le débogueur mais utilise gulp et grunt pour des tâches spécifiques. Apparemment, nvm ne s'entend pas avec les terminaux intégrés ou les sous-coques au moins dans ces éditeurs, car lors du chargement, la variable d'environnement $ PATH est modifiée en interne et procède comme suit, selon un commentaire de l'un des contributeurs de ce paquetage dans ce numéro ici NVM ne parvient pas à se charger dans le shell imbriqué # 1652 :

"@charsleysa Je sais pourquoi nvm renvoie cette erreur. Dans votre sous-shell, la partie/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin fait partie de votre PATH déplacé de la fin du PATH au début.

  • Lorsque nvm est alors démarré, il appelle nvm_change_path (ma contribution l'a modifiée en nvm_prepend_path), ce qui modifie la partie du chemin en place qui concerne nvm.
  • Nvm vérifie ensuite le préfixe npm actuel en lui demandant ce que c'est. Depuis que/usr/local/bin/npm est maintenant prioritaire, il renvoie/usr/local/bin.
  • Nvm vérifie ensuite si le préfixe actuel signalé par npm se trouve dans l’arborescence de la version actuelle du nœud nvm (à ce stade, le répertoire d’installation de la version de nœud que votre alias nvm par défaut a résolu).
  • Le préfixe ne faisant pas partie de cet arbre, il se désactive (appelez nvm_strip_path dans le processus, raison pour laquelle il n'y a pas de chemin associé à nvm dans le chemin PATH de votre sous-shell) et annule l'erreur que vous obtenez . Le fichier/etc/profile de macOS (ou/etc/zprofile) appelle/usr/libexec/path_helper, qui effectue le PATH switcheroo.

Dans le shell parent, PATH ne contient pas encore de répertoire nvm. Par conséquent, au moment de l'exécution de nvm, il ajoute son répertoire au chemin. Mais dans le sous-shell, PATH a été reconfiguré par macOS pour mettre tous les répertoires non-système à la fin et nous avons le problème. "

Je recevais toujours ce message lors du lancement de tout terminal intégré:

nvm n'est pas compatible avec l'option "prefix" de npm config: actuellement définie sur "/usr/local"Run npm config delete prefix ou nvm use --delete-prefix vx.x.x --silent pour la désélectionner.

Ce que j’ai fait pour résoudre ce problème dans mon cas, c’était la partie «solution de contournement» du même problème signalé, qui est essentiellement la suivante:

  • Réinitialisez le chemin en ajoutant la ligne suivante dans mon ~/.bash_profile tout en haut avant toute autre chose: PATH = "/ usr/local/bin: $ (getconf PATH)"

Et après cela, plus aucun avertissement lorsque je lance un terminal intégré sur les deux éditeurs et que je peux interagir avec nvm pour basculer facilement et sans problème entre les versions de nœuds.

Ici, c’est la une autre } alternative au cas où celle-ci n’aiderait pas beaucoup.

14
Charlyboy

J'ai eu le même problème, mais les réponses ci-dessus n'ont pas aidé.

Apparemment, la valeur par défaut shellArgs pour osx est définie sur bash lorsque j'utilise zsh. J'ai résolu le problème en définissant la shellArgs dans mes paramètres utilisateur sur un tableau vide:

"terminal.integrated.shellArgs.osx": []

7
Skeevs

Une solution alternative que j'ai trouvée consiste à simplement lancer le code à partir du shell après avoir sélectionné votre noeud à l'aide de nvm.

Vous devez d'abord ouvrir la palette de commandes et sélectionner "installer 'code' dans Path".

 enter image description here

Puis lancez un terminal et sélectionnez votre nœud via nvm, puis lancez "code".

 enter image description here

7
jr.

J'ai essayé toutes les solutions suggérées mais rien ne fonctionnait.

/ usr/local/bin/node pointait quelque part. J'ai créé un lien symbolique vers un dossier de nœud nvm spécifique et cela résout le problème pour moi:

ln -s /Users/mad/.nvm/versions/node/v11.1.0/bin/node /usr/local/bin/node
0
madflanderz

J'ai le même problème et j'ai constaté que j'ai node installé par brew et nvm. J'ai désinstallé node installé par brew et les versions du code terminal et du code Visual Studio sont identiques.

0
franziga