wake-up-neo.com

Visual Studio Code zur Verwendung der von NVM angegebenen Knotenversion

Kann VS Code die von NVM angegebene Knotenversion verwenden? 

Ich habe 6.9.2 lokal installiert. Auch wenn nach dem Umschalten auf eine andere Version vom OS X-Terminal (nicht vom VS-Code-Terminal) der VS-Code neu gestartet wird, zeigt VS-Code immer noch 6.9.2.

OS X-Terminal

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

Die Lösung besteht darin, den Alias ​​default zu setzen. Im OS-Terminal ausführen - 

nvm alias default 7.8.0

Open vscode, jetzt läuft node -v gibt 7.8.0 zurück 

Es scheint, dass vscode diesen Wert (Alias-Standardwert) verwendet und nicht die durch nvm use X.X.X festgelegte Knotenversion.

Update (12/04/2018) - Diese Lösung funktioniert möglicherweise nicht für alle. Weitere Lösungen finden Sie unter den Antworten. 

28
Aseem Gautam

fügen Sie runtimeExecutable so zu Ihrem .vscode/launch.json hinzu

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

Wechseln Sie in VS Code zu Ihrer Datei launch.json und fügen Sie das Attribut runtimeVersion in die Konfigurationen ein (siehe unten). (In diesem Beispiel gehen wir davon aus, dass 4.8.7 bereits mit nvm installiert ist.)  

{
"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

Ich hatte das gleiche Problem, dass ich meine durch nvm angegebene Knotenversion in meiner OS X-Umgebung nicht nur mit VSCode, sondern auch mit Atom Editor beibehalten konnte (mit dem platformio-ide-terminal-Paket für die Verwaltung des integrierten Terminals). Keiner der Vorschläge in den vorherigen Antworten funktionierte für mich, außer dass ich den Debugger nicht verwendete, sondern für bestimmte Aufgaben Schluck und Grunzen verwendete. Offensichtlich kommt nvm mit den integrierten Terminals oder Subshells zumindest in diesen Editoren nicht aus, weil beim Laden die Umgebungsvariable $ PATH intern geändert wird und Folgendes entsprechend einem Kommentar eines der Mitwirkenden dieses Pakets in dieser Ausgabe tut here NVM kann nicht in der geschachtelten Shell # 1652 geladen werden :

"@charsleysa Ich weiß, warum nvm diesen Fehler auslöst. In Ihrer Subshell war der/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin-Teil Ihres PFADs vom Ende des PFADs zum Anfang verschoben.

  • Wenn nvm dann gestartet wird, ruft es nvm_change_path auf (mein Beitrag hat es in nvm_prepend_path geändert), wodurch der nvm-relevante Teil des Pfads geändert wird.
  • Nvm überprüft dann das aktuelle npm-Präfix, indem er npm fragt, was es ist. Da/usr/local/bin/npm jetzt Vorrang hat, wird/usr/local/bin gemeldet.
  • Nvm prüft dann, ob sich das von npm gemeldete aktuelle Präfix in der Verzeichnisstruktur der aktuellen Version des Nvm-Knotens befindet (zu diesem Zeitpunkt wird das Installationsverzeichnis der Node-Version, auf die sich Ihr Standard-Nvm-Alias ​​bezieht, aufgelöst).
  • Das Präfix ist nicht Teil dieses Baums, also deaktiviert es sich selbst (den Aufruf von nvm_strip_path im Prozess, weshalb sich im Pfad der Subshell kein nvm-bezogener Pfad befindet) und mit dem Fehler, den Sie erhalten, ___./etc/profile (oder/etc/zprofile) von macOS ruft/usr/libexec/path_helper auf, wodurch das PATH-Switcheroo ausgeführt wird.

In der übergeordneten Shell hat PATH noch kein nvm-Verzeichnis, und wenn nvm ausgeführt wird, fügt es sein Verzeichnis dem Pfad hinzu. In der Subshell wurde PATH jedoch von macOS neu konfiguriert, um alle Nicht-System-Verzeichnisse am Ende zu platzieren, und wir haben das Problem. "

Diese Meldung wurde beim Starten eines integrierten Terminals immer angezeigt:

nvm ist nicht mit der Option "Präfix" von npm config kompatibel: Derzeit auf "/usr/local"Run npm config delete prefix oder nvm use --delete-prefix vx.x.x --silent gesetzt, um die Einstellung aufzuheben.

Was ich in meinem Fall gelöst habe, war der "Problemumgehungsteil" des gleichen Problems, das im Wesentlichen Folgendes ist:

  • Setzen Sie den Pfad zurück, indem Sie vor allem anderen die folgende Zeile in mein ~/.bash_profile einfügen: PATH = "/ usr/local/bin: $ (getconf PATH)"

Und danach keine Warnungen mehr, wenn ich ein integriertes Terminal auf beiden Editoren starte und ich mit nvm interagieren kann, um zwischen jeder Knotenversion problemlos und problemlos zu wechseln.

Hier ist eine andere Alternative nur für den Fall, dass dieser nicht so viel hilft.

14
Charlyboy

Ich hatte das gleiche Problem, aber die obigen Antworten haben nicht geholfen.

Anscheinend ist der Standard shellArgs für osx auf bash gesetzt, während ich zsh verwende. Ich habe das Problem gelöst, indem Sie shellArgs in meinen Benutzereinstellungen auf ein leeres Array gesetzt haben:

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

7
Skeevs

Eine alternative Lösung, die ich gefunden habe, ist, einfach Code von der Shell aus zu starten, nachdem Sie Ihren Knoten mit nvm ausgewählt haben.

Sie müssen zuerst die Befehlspalette öffnen und "Code installieren" in Pfad auswählen.

 enter image description here

Starten Sie dann ein Terminal, wählen Sie Ihren Knoten über nvm aus und starten Sie "code".

 enter image description here

7
jr.

Ich verwende oh-my-zsh und es wurde auch nicht die von nvm angegebene Knotenversion verwendet. Es wurden verschiedene Vorschläge ausprobiert, aber das Problem konnte nur durch Hinzufügen der folgenden Zeile am oberen Rand von ~/.zshrc Behoben werden.

PATH="/usr/local/bin:$(getconf PATH)"
6
BlueTabasco

Ich habe alle vorgeschlagenen Lösungen ausprobiert, aber nichts hat funktioniert.

/ usr/local/bin/node wies irgendwo hin. Ich habe einen Symlink zu einem bestimmten NVM-Knotenordner erstellt, und das Problem wurde für mich gelöst:

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

Ich habe das gleiche Problem und habe festgestellt, dass ich node von brew und nvm installiert habe. Ich habe node deinstalliert, das von brew installiert wurde, und die Versionen auf Terminal und Visual Studio-Code sind jetzt gleich.

0
franziga

Besonders mit der Shell hatte ich keine Probleme, aber Sie dürfen:

  • überprüfen Sie, ob Ihre Shell richtig konfiguriert ist oder ändern Sie sie (Sie verwenden möglicherweise andere Shells für vscode oder Ihr Terminal)
  • überprüfe dein env und wenn es nicht richtig eingestellt ist, benutze das terminal.integrated.env.<platform>

Ich hatte Probleme mit vscode selbst und keine Lösung konnte mir helfen. Also habe ich das folgende Startskript fertiggestellt.

    {
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${workspaceFolder}/server.js",
        "runtimeExecutable": "/bin/bash",
        "runtimeArgs": ["-c", ". ~/.nvm/nvm.sh;nvm run default \"[email protected]\"", "dummy"]
    },

dies setzt voraus, dass Sie es für bash konfiguriert haben (andernfalls in Ihre Shell ändern) und die von nvm konfigurierte Knotenversion default verwenden möchten (Sie können sie auch ändern).

Hinweis : Der "Dummy" -Parameter ist erforderlich, damit die restlichen Parameter ordnungsgemäß analysiert werden.

Eine längere Erklärung für "Dummy": Shell-Skripte verwenden Positionsparameter, wobei der erste der Speicherort des Skripts selbst ist (adressiert von $0), wenn Sie das -c flag das Skript wird an Ort und Stelle gelesen und es gibt kein $0 wird gesetzt. vscode übergibt einige Argumente, z. B. die Position des Knoten-Startskripts, die falsch interpretiert wird, sodass "dummy" alle Parameter um eine Stelle verschiebt. Es kann einfach alles sein, aber es muss da sein.

0
estani

Habe nicht die ganze Lösung ausprobiert, aber für mich hat das Update von nvm einfach funktioniert.

Folgen Sie einfach der Installation hier und stellen Sie sicher, dass Sie bash_profile ist aktualisiert.

0
Iar0