Nvm-windows: Warum funktioniert es nicht, die Knotenversion über "nvm use" zu wechseln

Erstellt am 11. Dez. 2017  ·  43Kommentare  ·  Quelle: coreybutler/nvm-windows

Wenn dies eine Frage zur Verwendung von NVM4W ist, verwenden Sie stattdessen

Wenn dies ein Problem mit Antivirus ist, stellen Sie sicher, dass Sie zuerst die vorhandenen Probleme durchsuchen.

Meine Umgebung

  • [x] Windows 7 oder niedriger (wegen EOL nicht wirklich unterstützt - siehe Wiki für Details)

Ich verwende die NVM4W-Version:

  • [x] 1.1.6

Ich habe schon...

  • [x] Lesen Sie die README-Datei, um sich über npm-Gotchas und Antivirus-Probleme zu informieren.
  • [x] hat das Wiki überprüft, um sicherzustellen, dass mein Problem nicht bereits gelöst wurde.
  • [ ] hat bestätigt, dass ich ein Konto mit Administratorrechten verwende.
  • [ ] hat die Issues (offen und geschlossen) durchsucht, um sicherzustellen, dass es sich nicht um ein Duplikat handelt.
  • [ ] stellte sicher, dass dies keine Frage zur Verwendung von NVM für Windows ist, da gitter für Fragen und Kommentare verwendet wird.

Mein Problem bezieht sich auf (kreuzen Sie nur die zutreffenden an):

  • [ ] settings.txt
  • [ ] Proxy-Unterstützung (Haben Sie Version 1.1.0+ ausprobiert?)
  • [ ] 32- oder 64-Bit-Unterstützung (Haben Sie Version 1.1.3+ ausprobiert?)
  • [ ] Zeichen-Escape (Haben Sie Version 1.1.6+ ausprobiert?)
  • [ ] Eine Standard-Shell-Umgebung (Terminal/Powershell)
  • [ ] Eine nicht standardmäßige Shell-Umgebung (Cmder, Hyper, Cygwin, git)

Erwartetes Verhalten

Ich habe versucht, v8.9.1 auf 6.12.0 umzustellen (Knotenversion)

Tatsächliches Verhalten

aber es wurde nicht auf 6.12.0 oder eine andere Version umgestellt.
(ich habe endlich 8.9.1 installiert)

Schritte zum Reproduzieren des Problems:

Ich habe cmd über den Administrator geöffnet.

C:Windowssystem32>nvm ls

  • 8.9.1 (Benutzt derzeit eine ausführbare 64-Bit-Datei)
    7.1.0
    6.12.0

C:Windowssystem32>Knoten -v
v8.9.1

C:Windowssystem32>nvm verwenden 6.12.0
Jetzt mit Knoten v6.12.0 (64-Bit)

C:Windowssystem32>Knoten -v
v8.9.1

C:Windowssystem32>nvm ls

  • 8.9.1 (Benutzt derzeit eine ausführbare 64-Bit-Datei)
    7.1.0
    6.12.0

Hilfreichster Kommentar

Problemumgehung:
"C:Program Filesnodejs" umbenannt in "C:Program Filesnodejsx",
Dann von einem erhöhten cmd namens "nvm use 8.9.1" (jede Version, die Sie haben, sollte funktionieren..) und es begann zu funktionieren.
Das Problem scheint zu sein, wenn das Nodejs-Verzeichnis existiert, nvm es nicht in einen Symlink ändern kann und "still fehlschlägt" wäre schön mit einem Fehler und einer Fehlermeldung, die das Problem angibt.

Alle 43 Kommentare

das gleiche

+1

Gleiches mit nvm 1.1.5:

C:\windows\system32>nvm version
1.1.5

C:\windows\system32>nvm ls

    8.9.2
  * 4.7.2 (Currently using 64-bit executable)

C:\windows\system32>nvm use 8.9.2
Now using node v8.9.2 (64-bit)

C:\windows\system32>node -v
v4.7.2

C:\windows\system32>

@biologeek dasselbe :/
hast du eine lösung gefunden?

Dies tritt am häufigsten aufgrund der Verwendung eines nicht privilegierten Benutzerkontos auf. Ihr Konto muss über Berechtigungen auf Administratorebene verfügen, da Windows dies für symbolische Links erfordert. nvm use erstellt einen symbolischen Link zur entsprechenden Node-Installation. Wenn Ihr Symlink innerhalb von C:\Program Files , benötigen Sie erhöhte Berechtigungen (nvm4w wird dies automatisch für Sie tun).

Ich bin Admin auf meinem PC. Obwohl ich dieses Problem beheben könnte, indem ich Ordner manuell umbenenne, sodass der nvm-Symlink auf die von mir benötigte Version zeigt.
Schnell und schmutzig, aber kein Administratorzugriff erforderlich!

@biologeek - Sie benötigen immer noch Administratorzugriff, um Verzeichnisse innerhalb von C:\Program Files umzubenennen, da es sich um ein geschütztes Verzeichnis unter Windows handelt (dasselbe gilt für C:\windows\system32 ). Persönlich behalte ich meinen NVM4W-Symlink in meinem Benutzerverzeichnis, damit dies kein Problem darstellt.

+1 zu diesem Problem: Ich kann die Version nicht ändern.

Problemumgehung:
"C:Program Filesnodejs" umbenannt in "C:Program Filesnodejsx",
Dann von einem erhöhten cmd namens "nvm use 8.9.1" (jede Version, die Sie haben, sollte funktionieren..) und es begann zu funktionieren.
Das Problem scheint zu sein, wenn das Nodejs-Verzeichnis existiert, nvm es nicht in einen Symlink ändern kann und "still fehlschlägt" wäre schön mit einem Fehler und einer Fehlermeldung, die das Problem angibt.

Kann bestätigen, was @ituasdu gesagt hat. Danke!

@ituasdu hat mein Problem gelöst,thx

Hallo, gleiches Problem hier.

NVM erstellt einen Symlink zur installierten Knotenversion.

Das Problem ist, dass Windows 7 Administratorrechte erfordert, um einen Symlink zu erstellen, und dies ist in Windows 10 nicht mehr der Fall.

Eine Problemumgehung besteht darin, Junctions ('harte' Links) unter Windows 7 mit dem Parameter '/J' zu verwenden. Junctions erfordern keine Administratorrechte und Benutzerkonten mit geringen Berechtigungen, da meine sie verwenden können. Beispiel:

nvm install 8.11.2
mklink /D /J node C:\PATH_TO_NVM\nvm\v8.11.2

Frage: Wäre es nicht eine gute Idee, Junctions anstelle von Symlinks zu verwenden? Oder zumindest eine Option für nvm angeben, zB '--junctions'?

Ich denke darüber nach, einen Pull-Request dafür zu erstellen, da es für mein Unternehmen blockiert. Wäre es hilfreich?

@nan0 Das Erstellen einer Junction unter Windows 7 funktioniert nicht ... es werden immer noch keine Versionen

C:\Program Files\nodejs enthält v6.9.4 (installiert vor der Installation von NVM4W).

C:\Users\[user]\AppData\Roaming\nvm enthält v6.9.4\ und v8.11.3\

Ich habe den Befehl ausgeführt, den Sie in Ihrem Beitrag angegeben haben:

Fehler 1:
mklink /D /J node C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 Wenn ich versuche, es für v6.9.4 zu tun, sagt es "Kann keine Datei erstellen, wenn diese Datei bereits existiert."

Problem 2:
Außerdem bedeutet die Verwendung von nvm use v8.11.3 dann nvm list nicht, dass tatsächlich eine der installierten nvm-Knotenversionen verwendet wird.

Gibt es noch etwas, das getan werden kann?
Wie kann ich die erstellten Kreuzungen sehen? Wo gibt es sie eigentlich?

Ich benutze:
Windows 7. Für meinen Benutzer sind keine Administratorrechte erlaubt.

egal, es funktioniert. Mir wurde klar, dass ich junction im falschen Ordner erstellt habe.

Umbenennen von C:Program Filesnodejs in C:Program Files nodejsx
und dann die Kreuzung als "nodejs" zu machen und auf C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 verweisen hat funktioniert!

Zusammenfassend lautet die Lösung also:

ohne dass ein eigenständiger Knoten installiert ist.

Verwenden Sie im Ordner C:\Program Files\ cmd , um mklink /D /J nodejs C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 auszuführen

Für Mitwirkende: Danke!

Jedoch; Ich möchte darauf hinweisen, dass Junctions explizit vermieden wurden, da sie nicht über verschiedene Festplatten hinweg funktionieren. Dies war ein besonderer Schwachpunkt in Unternehmensnetzwerken mit freigegebenen Laufwerken/zugeordneten Laufwerken.

@ituasdu Es hat mein Problem gelöst,
Danke für die Lösung.

Mein Computer ist Windows 7 und ich habe Administratorrechte. In der gleichen Situation kann NVM die Version nicht ändern.Mein Ansatz besteht darin, NVM_SYMLINK D:Project NVM v8.11.4 in der Umgebungsvariable einzurichten. Zum Wechseln von Knotenversionen muss nur die Versionsnummer entsprechend dem NVM-Pfad der Umgebungsvariablen geändert werden, z. B.: NVM_SYMLINK D:Project NVM v6.9.0. Auf diese Weise war das Problem zwar gelöst, aber jedes Mal, wenn ich die Version änderte, war es mühsam, und ich fand im Moment keine bessere Lösung.

Die Lösung von "Sagan" aus Stack Overflow funktioniert bei mir:
https://stackoverflow.com/questions/28313372/nvm-for-windows-not-working

Für mich,

nvm list 

image

Dann entferne ich den Ordner
image

Danach:

nvm list 

image

Dann verschiebe ich v8.9.4 zurück.

Dies passiert bei mir unter Windows 10 10.0.17134.165
Ich habe die von @ituasdu erwähnte Lösung

Wenn Sie das gefunden haben, nachdem Sie cmd ausprobiert haben:
nvm use 6.10.0
und die nodejs-Version nicht geändert wurde, können Sie cmd.exe oder Powershell vom Administrator starten.
image

Ich hatte das gleiche Problem beim Wechsel zwischen Knoten 6.6.0 und 7.9.0 (Windows 10), aber die Lösung von ituasdu funktionierte nicht. Eine Neuinstallation von nvm hat auch nicht funktioniert.

Ich habe nvm install Latest (installierte 11.3.0) ausgeführt und dies hat es irgendwie für mich behoben.

Problemumgehung:
"C:Program Filesnodejs" umbenannt in "C:Program Filesnodejsx",
Dann von einem erhöhten cmd namens "nvm use 8.9.1" (jede Version, die Sie haben, sollte funktionieren..) und es begann zu funktionieren.
Das Problem scheint zu sein, wenn das Nodejs-Verzeichnis existiert, nvm es nicht in einen Symlink ändern kann und "still fehlschlägt" wäre schön mit einem Fehler und einer Fehlermeldung, die das Problem angibt.

Das hat bei mir funktioniert.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

@ituasdu hat auch bei mir funktioniert.. danke.. :)

@ituasdu Danke, funktionierte wie ein Zauber. Ich glaube, dies passiert, wenn Leute NodeJS zuvor direkt ohne nvm installiert haben und dann versuchen, node über nvm zu verwenden.

Bei mir funktioniert das auch, danke.

Ich weiß nicht, ob dies etwas Licht auf das Problem bringen könnte, aber in meinem Fall denke ich, dass dies nach der Installation einer neuen Version von Node ohne nvm (manuell) passiert ist. Scheint, dass diese Aktion nvm verrückt macht.

@coreybutler irgendwelche Gedanken zur Installation des Symlinks in einem Ordner, der keine Administratorrechte erfordert? Ich weiß, dass dies in der Windows-Entwicklung eine leichte, schlechte Form sein könnte, aber es wird definitiv all diese Probleme umgehen, insbesondere in einer stark gesperrten Unternehmensumgebung, in der es sehr schwierig ist, Administratorrechte zu erhalten.

Andere Schmerzen sind das, woran ich derzeit leide (nicht wegen nvmw), wo ich, obwohl ich in einigen Fällen tatsächlich Admin-Privilegs habe, jedes Mal, wenn ich zwischen Knotenversionen wechseln möchte, ein ganz anderes cmd-Fenster öffnen muss. Führen Sie cmd als Admin aus und führen Sie schließlich nvm use 10.15.1 (zum Beispiel). dann nav zurück zu meinem dev, cmd-Fenster. arg. wieder schmerzen wegen arbeit env nicht wegen nvmw. (nvmw ist übrigens großartig).

nur ein Gedanke. ;-)

Führen Sie nvm use <node.js version you want to use> (zB nvm use 10.15.3 ) unter Powershell ISE aus, da der Administrator das Problem in meinem Windows 10 gelöst hat.

Ich muss nvm use any.version mehrmals unter Powershell als Administrator ausführen, damit es funktioniert. Es ändert zufällig die Version beim ersten, zweiten oder dritten Versuch (nvm-Version 1.1.7).

Ich habe versucht, es zu beheben, indem ich die Link Shell-Erweiterung installiert und die folgenden Schritte ausgeführt habe:

  1. Rechtsklick auf C:\Program Files\nodejs
  2. wählen Sie _Linkquelle auswählen_
  3. Rechtsklick auf C:\Program Files
  4. Wählen Sie _Ablegen als..._ > _Symbolischer Link_
  5. benennen Sie nodejs - SymbolicLink in nodejsx

Aber leider tritt das Problem immer noch auf.

Kann bestätigen, dass die @ituasdu- Lösung auch bei mir funktioniert hat.

@ituasdu funktioniert für mich, danke.

@monico-moreno - das nächste Mal pingen Sie mich per E-Mail an, wenn ich monatelang nicht antworte :) Um Ihre Frage zu beantworten, können Sie mit dem Installationsprogramm in jedem gewünschten Ordner installieren. Jedoch; Alle symbolischen Links unter Windows erfordern Administratorrechte, mit Ausnahme einiger Entwicklermodi in neueren Editionen von Windows 10. Unterm Strich kommen Administratorrechte irgendwann ins Spiel.

Vielleicht können Sie das Menüsystem auch Betatesten, wenn ich es abschließe (Versionswechsel über die Windows-Taskleiste). Wäre das ein besserer Workflow?

  • Öffnen Sie die Systemsteuerung und deinstallieren Sie nvm und node.
  • installiere nvm-setup.zip von https://github.com/coreybutler/nvm-windows/releases
  • Eingabeaufforderung öffnen. Geben Sie nvm install @version ein. dann nvm verwenden version.
  • Garn installieren. Führen Sie dann in der Eingabeaufforderung Garn installieren oder Garn aus.
  • Überprüfen Sie die Knotenversion mit Knoten -v.

Ich hatte gerade ein ähnliches Problem, aber aus anderen Gründen.

D:\> node -v
v12.14.0
D:\> nvm use 8.9.4
Now using node v8.9.4 (64-bit)
D:\> node -v
v12.14.0

// problem
D:\> where node
D:\soft\nodejs\node.exe // <- old nvm used this one
C:\Program Files\nodejs\node.exe // <- new nvm was changing this one

IIRC Ich hatte eine vorherige nvm-Version auf D:soft installiert und änderte den Link D:softnodejs. Irgendwann funktionierte das alte nvm nicht mehr, weil das npm-Repository den Standort geändert hat (wenn es funktioniert - bitte nicht berühren). Ich musste neue nvm installieren, und ich denke, neue nvm weigerte sich, den alten Link zu ändern, sondern aktualisierte stattdessen den Link C:Program Filesnodejs. Also habe ich D:softnodejs entfernt und es wurde behoben.

Danke an @delepster, der vorgeschlagen hat, den alten Knoten zu deinstallieren, das hat mir geholfen, das Problem zu erkennen

Wir haben heute auf drei Computern installiert, davon zwei mit installiertem Windows 10-Betriebssystem und einer mit Windows-Server. Beide Maschinen mit Windows 10-Betriebssystem verloren ihre Suche bei Startfunktionen, aber nicht die mit Windows Server-Betriebssystem. Sie können also den Namen des gewünschten Programms nicht mehr eingeben und sehen.

Hat noch jemand das gleiche Problem?

@putko Dies ist ein Windows-Problem, das heute aufgetreten ist und von MS bestätigt und behoben wurde. siehe diesen Tweet https://twitter.com/tomwarren/status/1225110095010418689

Problemumgehung:
"C:Program Filesnodejs" umbenannt in "C:Program Filesnodejsx",
Dann von einem erhöhten cmd namens "nvm use 8.9.1" (jede Version, die Sie haben, sollte funktionieren..) und es begann zu funktionieren.
Das Problem scheint zu sein, wenn das Nodejs-Verzeichnis existiert, nvm es nicht in einen Symlink ändern kann und "still fehlschlägt" wäre schön mit einem Fehler und einer Fehlermeldung, die das Problem angibt.

Das hat bei mir funktioniert.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

Das hat bei mir auch funktioniert.

Hatte ein ähnliches Problem mit 1.1.7 , habe endlich herausgefunden, dass die Datei settings.txt ignoriert wird. nvm use würde absolut nichts tun, bis ich NVM_SYMLINK manuell eingestellt habe. Auch ohne gesetztes SYMLINK wird nvm versuchen, . zu entfernen, was, gelinde gesagt, interessant ist.

Der Parameter path in settings.txt , der enthält, was standardmäßig als SymLink verwendet werden soll, wird niemals gelesen oder zum Initialisieren verwendet:
https://github.com/coreybutler/nvm-windows/blob/88353cfcea140e02e2b13584fd89454adc9f52b3/src/nvm.go#L727 -L751

Bei der neuesten Version von Windows 10 Pro, bei der ich eine Neuinstallation durchgeführt habe, ist das gleiche Problem aufgetreten.

Meine üblichen Schritte zum Einrichten meiner Maschine sind:

  1. Primäre Abhängigkeiten installieren (NodeJS und Docker)
  2. IDE installieren (Visual Studio 2019 zu diesem Zeitpunkt mit .NET-, NodeJS- und Python-Entwicklungsabteilungen)
  3. Installieren Sie zusätzliche Abhängigkeiten wie Windows Terminal, PL-Schriftarten, nvm, tmux, WSL2 usw.

@ituasdu ist in seiner Behauptung richtig, als ich meine nodejs-Datei umbenannte, konnte ich nvm use verwenden und tatsächlich einstellen. Andernfalls würde es fälschlicherweise gelingen und mir die Versionsnummer mitteilen usw., aber die Version wurde nicht festgelegt und ich bleibe bei dem LTS, das ursprünglich installiert wurde.

Ich weiß, dass es tatsächlich eine Zeile gibt, die besagt, dass wir den vorhandenen Knoten deinstallieren sollten, den ich beim ersten Mal in der README.md verpasst habe, aber nachdem ich nvm-windows verwendet habe, bevor ich es nicht noch einmal überprüft habe, habe ich es einfach über Chocolate installiert und das vergessen . (Ist es möglich, die npm-Deinstallation einfach als Teil der Installation von Chocolatey durchzuführen oder einfach zu erkennen, ob es eine gibt und den Benutzer aufzufordern, sie zuerst zu deinstallieren, bevor sie nvm installieren?)

(Ist es möglich, die npm-Deinstallation einfach als Teil der Installation von Chocolatey durchzuführen oder einfach zu erkennen, ob es eine gibt und den Benutzer aufzufordern, sie zuerst zu deinstallieren, bevor sie nvm installieren?)

Ich denke, es ist möglich: Diese Anfrage sollte an den Chocolatey nvm-Paketbetreuer gerichtet werden .

Dies passiert, wenn Sie Node separat auf Ihrem Computer installiert haben (von der Website oder vom Paketmanager). Das Deinstallieren und Installieren über nvm sollte das Problem lösen.

Ich habe das gleiche Problem und die Verwendung von PS im Admin-Modus behebt das Problem nicht. (Windows 10.0.18363)

image

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen