Nvm-windows: Der Ordner muss bei der NVM-Deinstallation manuell entfernt werden

Erstellt am 11. März 2017  ·  13Kommentare  ·  Quelle: coreybutler/nvm-windows

Hallo,
Hier sind die Schritte zum Reproduzieren (einschließlich Fehlerbeschreibung). Dies geschieht auf einem x64-System.

nvm installiere xyz (6.10.0 oder ähnlich, aber die Version spielt keine Rolle)
nvm deinstalliere xyz
=> Deinstallation erfolgreich, kein Rest

nvm installiere xyz
nvm benutze xyz
nvm benutze uvw (eine andere Version - nur um sicherzugehen, dass xyz nicht verwendet wird - dieser Schritt ist wahrscheinlich nicht notwendig)
nvm deinstalliere xyz
=> müssen den Ordner xyz manuell aus dem nvm-Pfad entfernen, der immer nur node.exe enthält

IMO, dies geschieht, weil vor der "Verwendung" eine node64.exe vorhanden ist, die bei "Verwendung" in "node.exe" umbenannt wird. Diese node.exe bleibt von diesem Punkt an erhalten und blockiert offensichtlich das Entfernen des Ordners.

Ich hoffe die Beschreibung ist klar genug.
Vielen Dank

bug

Hilfreichster Kommentar

müssen aufgrund des gleichen Problems unter macOS erneut geöffnet werden

Alle 13 Kommentare

Wenn Sie danach nvm ls ausführen, wird die deinstallierte Version angezeigt?

Ja, in der Tat - nach der Installation / Verwendung / Deinstallation zeigt nvm ls immer noch die
deinstallierte Version.

Übrigens, wenn ich node.exe vor der Deinstallation in node64.exe umbenenne, wird die
Version wird vollständig entfernt (ohne die manuell entfernen zu müssen
Mappe).

OK, ich habe dies als Fehler markiert. Welche Windows-Version verwenden Sie?

Welche Windows-Version verwenden Sie?

Windows 10 (Jubiläumsupdate) x64

Hallo,

afaict (aber ich bin kein Go-Entwickler) in arch.go: SearchBytesInFile the
geöffnete Datei wird niemals geschlossen. Wenn also os.RemoveAll versucht, das zu löschen
Dateien gibt es eine Freigabeverletzung.

Ich bin allerdings etwas überrascht, dass dies noch nicht berichtet wurde,
weil ich denke, dass der Fehler jedes Mal auftreten sollte, wenn eine "gebrauchte" Version
(die node.exe enthält) muss deinstalliert werden.

Sobald die ausführbare Datei einen Vorgang abgeschlossen hat, ist sie keinen Dateien mehr zugeordnet. Mit anderen Worten, die ausführbare Datei führt eine Operation aus und schließt dann alle Dateiverbindungen durch Beenden. Jedoch; Ich hatte noch keine Gelegenheit, dies auf dem neuesten Windows-Build persönlich zu testen. Wenn Windows jetzt eine Dateisperre für diesen Vorgang verwendet, haben Sie möglicherweise Recht ... das könnte noch lange dauern.

Ich werde versuchen, dies so schnell wie möglich zu debuggen, aber ich habe diese Woche einen Vertragsjob und habe SXSWi-Verpflichtungen. Es kann also eine Weile dauern, bis ich mich tatsächlich damit setzen kann.

Sobald die ausführbare Datei einen Vorgang abgeschlossen hat, ist sie keinen Dateien mehr zugeordnet. Mit anderen Worten, die ausführbare Datei führt eine Operation aus und schließt dann alle Dateiverbindungen durch Beenden.

IMO: nvm.exe öffnet node.exe (und nur das, nicht node64.exe oder ähnliches)
und scannt ein paar Bytes, schließt aber das Dateihandle nicht.
Dann versucht nvm.exe den Ordner zu entfernen (hat ihn aber natürlich nicht beendet
dazwischen, so dass das Dateihandle noch offen ist).

Jedoch; Ich hatte noch keine Gelegenheit, dies auf dem neuesten Windows-Build persönlich zu testen. Wenn Windows jetzt eine Dateisperre für diesen Vorgang verwendet, haben Sie möglicherweise Recht ... das könnte noch lange dauern.

Es ist nicht wirklich eine Dateisperre. Ich lasse nvm.exe den Fehler und es ausgeben
lautet "Der Prozess kann nicht auf die Datei zugreifen, da sie von verwendet wird
ein anderer Prozess "(das ist die gleiche Nachricht, wenn es in der gleichen ist
Prozess).

Ich werde versuchen, dies so schnell wie möglich zu debuggen, aber ich habe diese Woche einen Vertragsjob und habe SXSWi-Verpflichtungen. Es kann also eine Weile dauern, bis ich mich tatsächlich damit setzen kann.

Okay kein Problem. Wenn Sie es nur in der nächsten Version beheben könnten.

Vielen Dank!

Ich habe ein wenig getestet und dies tritt nur auf, wenn Sie die zu entfernende Version nxm xxx verwenden UND arch 64 verwenden. Wie bereits erwähnt, wird die node64.exe in node.exe umbenannt und nicht entfernt. Wenn Sie jedoch eine andere Version verwenden und node.exe manuell in node64.exe umbenennen (wie von ujaroe erwähnt), wird die Deinstallation erfolgreich abgeschlossen.

Dies bedeutet, dass es verschiedene Möglichkeiten gibt, das Problem zu beheben. Ich würde 'nvm use' empfehlen, um den Versionsordner wiederherzustellen, mit dem der Befehl use von FROM zurück in den ursprünglichen Zustand versetzt wird. Die andere ist die Deinstallation von check arch und stellt sicher, dass die ausführbare Datei des Knotens mit dem Bogen der Version übereinstimmt. Es gibt noch ein paar andere Dinge, die mit Symlinks gemacht werden könnten, aber ich denke, dies sind die besten zwei Optionen. Meine Go-Fertigkeit ist ziemlich niedrig, aber ich werde versuchen, bald eine oder beide davon zu bauen.

bearbeiten: Rechtschreibung

Gleiches Problem hier. CLI-Ausgabe:

❯ nvm list

  * 8.4.0 (Currently using 64-bit executable)
    6.11.2
    6.10.0

❯ nvm uninstall 6.10.0
Uninstalling node v6.10.0...Error removing node v6.10.0
Manually remove C:\Users\darsain\AppData\Roaming\nvm\v6.10.0.

❯ nvm list

  * 8.4.0 (Currently using 64-bit executable)
    6.11.2
    6.10.0

Nach dem Ausführen des uninstall Befehl, der v6.10.0 Ordner hatten nur node.exe in ihm - Datei. Ich bin mir zu 99% sicher, dass nichts davon verwendet wurde. Das manuelle Löschen hat gut funktioniert.

Aber die v6.10.0 Version wurde vor einiger Zeit auf NVM 1.1.1 installiert, denke ich. Heute habe ich auf 1.1.6 aktualisiert. Das Installieren und Entfernen von Knoten 6.11.2, das ich heute nach dem Upgrade durchgeführt habe, hat jedoch einwandfrei funktioniert.

Ich kann dies bestätigen. Ist mir auch unter Win10 x64 mit Node v6.9.1 und NVV 1.1.3 passiert

Dies geschah auch unter Win10 x64 (Version 1709) mit den Knoten v8.11.1 und nvm 1.1.6

Hallo, @coreybutler , der Fehler ist auch unter aufgetreten. Wenn ich den Befehl nvm use x.y.z , um die Version von nodejs zu wechseln, wird xyz nicht deinstalliert, während die Version des ABC, wenn ich nvm use nicht verwenden könnte

müssen aufgrund des gleichen Problems unter macOS erneut geöffnet werden

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

webspecialist picture webspecialist  ·  5Kommentare

leiamac picture leiamac  ·  4Kommentare

tomByrer picture tomByrer  ·  4Kommentare

janpio picture janpio  ·  3Kommentare

ctsstc picture ctsstc  ·  3Kommentare