229 votes

Visual Studio Code pour utiliser la version du nœud spécifiée par le NVM

Est-il possible pour VS Code d'utiliser la version du nœud spécifiée par le NVM ?

J'ai la version 6.9.2 installée localement. Même après avoir basculé vers une autre version, à partir du terminal OS X (pas du terminal VS Code), en redémarrant VS Code, VS Code indique toujours qu'il utilise 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

0 votes

Relié (et possiblement en double) : stackoverflow.com/questions/24585261/

222voto

Aseem Gautam Points 7269

La solution consiste à définir un alias default . Dans le terminal de l'OS, exécutez -

nvm alias default 7.8.0

Ouvrir vscode, maintenant en cours d'exécution node -v renvoie à 7.8.0

Il semble que vscode prenne cette valeur (alias par défaut) et non la version du nœud qui est définie par nvm use X.X.X

Redémarrez VS code pour qu'il prenne en compte les changements.

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

2 votes

Cela a fonctionné pour moi aussi, mais il devrait y avoir un moyen facile de spécifier le chemin vers le nœud globalement pour VSCode.

21 votes

Cela n'a pas fonctionné. Après l'aliasing, je dois utiliser nvm use default à chaque fois que j'utilise un nouveau terminal

0 votes

Ça n'a pas marché pour moi non plus. Pas plus que l'utilisation de nvm use default .

197voto

Sm Srikanth Points 380

Dans VS Code, allez dans 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é en utilisant 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"
    }
]}

13 votes

J'allais demander comment Code sait où trouver cette version, mais apparemment, cette option a été ajoutée spécifiquement pour nvm. code.visualstudio.com/docs/nodejs/

10 votes

Où se trouve le launch.json fichier ?

2 votes

@PetrusTheron si vous n'en avez pas déjà un, vous devrez en créer un. Il y a des instructions ici : code.visualstudio.com/docs/editor/debugging#_run-view

78voto

Ajouter 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"
}

0 votes

@Kiong vous pouvez créer un nouveau fichier et y copier le contenu ci-dessus.

2 votes

Dois-je créer le launch.json dans la racine de mon projet ?

2 votes

@Kiong crée le répertoire ".vscode" à la racine de votre projet puis crée "launch.json" à l'intérieur.

47voto

Charlyboy Points 321

J'ai eu le même problème d'être incapable de garder ma version de nœud spécifiée par nvm dans mon environnement OS X non seulement avec VSCode mais aussi avec Atom Editor (en utilisant le paquet platformio-ide-terminal pour gérer le terminal intégré dans celui-ci). Aucune des suggestions dans les réponses précédentes n'a fonctionné pour moi, en plus de ne pas utiliser le débogueur mais d'utiliser gulp et grunt pour des tâches spécifiques. Apparemment, nvm ne s'entend pas avec les terminaux intégrés ou les sub shells, du moins dans ces éditeurs, car lors de leur chargement, la variable d'environnement $PATH est modifiée en interne et fait ce qui suit selon un commentaire de l'un des contributeurs de ce paquet dans ce problème rapporté ici NVM ne parvient pas à se charger dans un shell imbriqué #1652 :

" @charsleysa Je sais pourquoi nvm génère cette erreur. Dans votre sous-shell, la partie /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin de votre PATH a été déplacée de la fin du PATH au début.

  • Lorsque nvm est ensuite lancé, il appelle nvm_change_path (ma contribution l'a changé de nvm_prepend_path), qui modifie la partie du chemin d'accès pertinente pour nvm.
  • Nvm vérifie ensuite le préfixe npm actuel en demandant à npm ce qu'il est. Puisque /usr/local/bin/npm a maintenant la préséance, il rapporte /usr/local/bin.
  • Nvm vérifie ensuite si le préfixe actuel tel que signalé par npm se trouve dans l'arborescence du répertoire de la version actuelle du nœud nvm (à ce stade, le répertoire d'installation de la version du nœud vers lequel votre alias nvm par défaut se résout).
  • Le préfixe ne fait pas partie de cette arborescence, donc il se désactive (en appelant nvm_strip_path dans le processus, ce qui explique pourquoi il n'y a pas de chemin lié à nvm dans le PATH de votre sous-shell), et s'arrête avec l'erreur que vous obtenez. Le fichier /etc/profile (ou /etc/zprofile) de macOS appelle /usr/libexec/path_helper, qui effectue le changement de PATH.

Dans le shell parent, le PATH ne contient pas encore de répertoire nvm, donc au moment où nvm s'exécute, 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."

J'obtenais toujours ce message lors du lancement d'un terminal intégré :

nvm n'est pas compatible avec l'option "prefix" de la configuration npm : actuellement définie à "/usr/local". Exécuter npm config delete prefix o nvm use --delete-prefix vx.x.x --silent pour le désactiver.

Ce que j'ai fait pour résoudre ce problème dans mon cas est la partie "solution de contournement" de ce 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, il n'y a plus d'avertissements lorsque je lance un terminal intégré sur les deux éditeurs et je peux interagir avec nvm pour passer d'une version de node à une autre facilement et sans aucun problème.

C'est ici un autre alternative juste au cas où celle-ci ne serait pas d'une grande aide.

3 votes

Cela devrait être la réponse acceptée. Auparavant, je réglais le runtimeVersion dans launch.json mais cela ne définit que la version du nœud pour une tâche spécifique. Cela fonctionne dans toute l'instance intégrée du terminal. Merci ! NB. J'ai dû définir la variable PATH dans .zshrc puisque j'utilise zsh pour que cela fonctionne

0 votes

Après avoir lu le lien alternatif fourni - qui suggérait que le problème venait de nvm et de la façon dont il gère les sous-shells - j'ai mis à jour nvm en v0.34.0 et cela fonctionne sans la solution de contournement de la réinitialisation du chemin.

27voto

Skeevs Points 186

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

Apparemment, la valeur par défaut shellArgs pour osx sont réglés sur bash pendant que j'utilise zsh . J'ai résolu le problème en définissant le paramètre shellArgs dans mes paramètres utilisateur à un tableau vide :

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

2 votes

Si which node est différent de cli que vscode, c'est votre solution !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X