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
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.
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"
}
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"
}
]}
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:
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.
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": []
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.
Starten Sie dann ein Terminal, wählen Sie Ihren Knoten über nvm aus und starten Sie "code".
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)"
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
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.
Besonders mit der Shell hatte ich keine Probleme, aber Sie dürfen:
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.
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.