Nvm-windows: Problem mit Leerzeichen im Pfad

Erstellt am 17. Feb. 2015  ·  71Kommentare  ·  Quelle: coreybutler/nvm-windows

Hallo! Ich habe ein Problem beim Versuch nvm use <node_version>
captura
Entschuldigung für die spanische Sprache im Screenshot. Das bedeutet, dass "c:\Users\Edu" nicht als interner Befehl erkannt wird... bla bla bla.
Mein Benutzername ist "Edu Martin" und mein Pfad ist "c:\Benutzer\Edu Martin\AppData\Roaming\nvm"
Kann es sein, dass ein Fehler mit schwarzen Leerzeichen im Pfad vorliegt?? Alle Einstellungen in meiner App sind Standard

Hilfreichster Kommentar

Eine Lösung hierfür besteht darin, Ihre settings.txt zu bearbeiten und das alternative Benennungsschema für Windows-Ordner zu verwenden, das keine Leerzeichen enthält, was für meinen Fall war:

2

(settings.txt befindet sich standardmäßig in AppData\Roaming\nvm)

Alle 71 Kommentare

+1

Problemumgehung für mich bestand darin, für den Benutzer Public zu deinstallieren und dann neu zu installieren. Nicht ideal, aber glücklich, NVM unter Windows auszuführen!

+1 viele Windows-Installationen haben Benutzernamen mit Leerzeichen

+1 dafür, hatte das gleiche Problem mit meinem Benutzernamen

1

Eine Lösung hierfür besteht darin, Ihre settings.txt zu bearbeiten und das alternative Benennungsschema für Windows-Ordner zu verwenden, das keine Leerzeichen enthält, was für meinen Fall war:

2

(settings.txt befindet sich standardmäßig in AppData\Roaming\nvm)

@coreybutler können wir das bitte beheben, bitte bitte?

:beten: :beten: :beten: :beten: :beten: :beten: :beten: :beten: :beten: :beten: :beten: :beten: :beten:

Hier ist ein Gif, um zu versuchen, dich zu zwingen...

Meine Build-Umgebung hat sich vor kurzem/wesentlich geändert, daher besteht das Problem darin, die Binärdateien freizugeben (ich hatte ein wirklich angepasstes Build-Skript). Ich würde den Fix gerne dem Master-Zweig hinzufügen, es würde nur das Erstellen aus der Quelle erfordern.

Ich muss nächste Woche nach Großbritannien reisen, aber wenn ich in die USA zurückkehre, werde ich das so schnell wie möglich ansprechen.

Das wäre nett @coreybutler :) Außerdem können wir vielleicht den nächsten Build (mit diesem Patch) mit #17 usw. verknüpfen?

Ich hatte dieses Problem, weil es "C:\Dokumente und Einstellungen(mein Name)\Anwendungsdaten\nvm" als Root verwenden wollte. Ich habe also nvm neu installiert und während der Installation "C:\" als Root anstelle des Standardwerts angegeben, sodass jetzt alle Versionen von Node in "C:\nvm" gespeichert werden, das natürlich keine Leerzeichen in der Weg. Settings.txt bestätigt dies als Root. Ich musste nur daran denken, nach C: \ zu cd zu machen, bevor ich einen der nvm-Befehle verwende, andernfalls wurde eine Fehlermeldung ausgegeben, die besagt, dass settings.txt nicht gefunden werden kann. Da C:\ in meinem Fall keinem Benutzer zugeordnet ist, werde ich beim Wechsel zu einer Version von Node mit "nvm use <version>" gefragt, welches Benutzerkonto ich zum Ausführen des Programms verwenden möchte. Aber es scheint gut zu laufen; Ich erhalte die Meldung "Jetzt wird Knoten <Version> verwendet".

+1 Für alle, die die Problemumgehung beim Bearbeiten der settings.txt durchführen möchten, können Sie dies über die Befehlszeile versuchen, um den korrekt formatierten Pfad zu erhalten

cmd /c für %A in ("C:\Benutzer\My Name With Spaces\AppData\Roaming\nvm") do @echo %~sA

Die Installation von nvm-windows in Programmdateien verursacht ebenfalls diesen Fehler. Das Aktualisieren der settings.txt wie unten behebt das Problem, aber es wäre schön, dies zu beheben oder als "Gotcha" in die ReadMe-Datei aufzunehmen!

root: C:\PROGRA~1\nvm
Pfad: C:\PROGRA~1\nodejs

Die Verwendung eines symbolischen Junction-Links unter Windows ist eine geeignete Problemumgehung für dieses Problem
benutze sowas
mklink /J nvm_home "C:\Benutzer\Chris McGrath\AppData\Roaming\nvm"

dann update settings.txt mit der Junction-Adresse

Sobald ich diese Link-Umschaltung erstellt habe, funktionierte sie ohne Probleme

Dieses Thema ist also seit fast einem Jahr offen. Ist nvm-Windows tot?

@codeimpossible - Nicht tot, ich hatte nur höhere Lebensprioritäten zu bewältigen. Ich werde eine Notiz dazu in gitter posten.

@coreybutler wollte dich nur wissen lassen, dass ich nvm-windows jeden Tag benutze und all die harte Arbeit schätze, die du in das Projekt gesteckt hast

@kirkouimet Danke ...

Hallo Coreybutler, tolle Arbeit mit nvm. Das macht mein Leben wirklich einfacher :D

Aber können Sie irgendwo Informationen über den Raum schreiben? Etwas wie

"Wenn Ihr Benutzername ein Leerzeichen enthält, ändern Sie das vom Installationsprogramm verwendete Standardverzeichnis und wählen Sie den Pfad ohne Leerzeichen."

Ich habe noch nie Wiki auf github bearbeitet. Ich habe ein bisschen Angst, was ich tun kann.

@AntiCZ - Gute Idee. Ich habe eine Seite mit allgemeinen Problemen hinzugefügt, um dies zu beheben. Ich werde dies bei Bedarf weiterhin ergänzen.

Ich löse meine mit:
cmd /c für %A in ("C:\Users\My Name With Spaces\AppData\Roaming\nvm") do @echo %~sA
von @mhchristensen .
Und dann ändere das Root in der settings.txt
Vielen Dank :+1:

Haben die Leute ohne ein Leerzeichen in $env:USERPROFILE immer noch Probleme damit, dass der nodejs-Pfad Leerzeichen in den Programmdateien enthält? Ich sehe nicht das gleiche Verhalten auf meiner Windows 2012R2-VM.

Ich werde mit einem Benutzer mit einem Leerzeichen im Namen testen, um zu sehen, ob dies einen kaskadierenden Fehler irgendeiner Art verursacht. Es wäre toll, einige Betriebssystemversionen zu erhalten und welche Cmd-Eingabeaufforderung Sie verwenden (PowerShell/CMD/Bash4Windows/GitBash).

Im Moment überarbeite ich ein Chocolatey-Paket, das jemand für nvm erstellt hat, und hoffe, es bald veröffentlichen zu können. Es vermeidet das Installationsprogramm und verwendet den schokoladigen Installationspfad, der keine Leerzeichen enthält, und ich hatte keine Probleme mit dem Knotenpfad mit Leerzeichen in der Datei settings.txt.

Ich hatte fast das gleiche Problem, außer dass mein Benutzername ein kaufmännisches Und (&) anstelle eines Leerzeichens hat. In dieser Situation hat die Verwendung des alternativen Ordnernamens nicht geholfen, da selbst der Kurzname noch das kaufmännische Und-Zeichen enthält. Das Erstellen eines symbolischen Links, wie @clmcgrath vorgeschlagen hat, war jedoch eine gute Problemumgehung für mich.

Installieren Sie es einfach in einem Verzeichnis ohne etwas Besonderes. Beispiel: C:\nvm\

Außerdem verwendet das NVM-Paket auf Chocolatey den Pfad C:\ProgramData\nvm, da dies das Programmdateien-Äquivalent von "Alle Benutzer" ist, jedoch ohne Leerzeichen.

Dies kann umgangen werden, indem alternative Namen für Ordner oder Dateien mit Leerzeichen verwendet werden. Zum Beispiel habe ich nvm in "C:\Programme\nvm" installiert. Gehen Sie zu dem Ordner über den Ordnern mit dem Leerzeichen und verwenden Sie die Option /X, um eine Verzeichnisliste mit antiken 8.3-Namen zu erhalten:

CD \
dir /X

Ich habe eine Zeile, die aussieht wie...

15.02.2017 15:44 \

Bearbeiten Sie dann einfach die Datei settings.txt (in meinem Fall in \Programme\nvm) und bearbeiten Sie den störenden Ordnernamen:

root: C:\Progra\~1\nvm
Pfad: C:\Progra\~1\nodejs

(Dies ist die gleiche Lösung, die @markbrownsword vor über einem Jahr gegeben hat, aber seine Nachricht wurde von der Markdown-Engine etwas falsch formatiert.)

Fenster

zum Pfad dort ohne Leerzeichen wechseln

oder

cmd als Administrator ausführen
und dann mklink zum neuen Pfad dort ohne Leerzeichen.

@coreybutler Gibt es Neuigkeiten zu diesem Problem? Ich bin gerade davon erwischt worden. Ich bin bereit, es zu veröffentlichen, wenn Sie mir sagen, wonach ich suchen soll :)

Ich habe gerade v1.1.6 vorveröffentlicht , die ein neues

TBH Ich hatte dieses Problem in einer Reihe von Veröffentlichungen jetzt nicht mehr, lief seit einem Jahr oder so ziemlich reibungslos

@clmcgrath - freut mich zu hören!

Zur Verdeutlichung, meine primäre Neugier gilt den nicht-englischen Installationen, die einige versteckte Zeichen erzeugten. Go erkannte als String-Terminator .... es schnitt den Weg vorzeitig ab.

Funktioniert immer noch nicht. Ich habe versucht, die settings.txt zu ändern, die auch nicht geholfen haben.

@chillerfx - nvm use fehlgeschlagen? Welches Gebietsschema ist Ihre Umgebung (nicht Englisch?)

Auf meinem Windows 7-Betriebssystem funktioniert 'nvm list', aber 'nvm use' funktioniert nicht. Mein Gebietsschema ist Englisch. Auch das Ändern von settings.txt zur Verwendung von ~1 aufgrund des Leerzeichens im Benutzernamen funktioniert nicht. Wenn dies erledigt ist, funktioniert nvm list ebenfalls nicht.

Mein Setup:

nvm v1.1.6
Windows 10 Pro (Version 1703, Build 15063.540)
Gebietsschema: Englisch (UK)

Habe immer noch dieses Problem. nvm install latest funktioniert, aber nvm use 8.4.0 schlägt fehl. Mein Benutzername enthält ein Leerzeichen wie "John Smith" und die Fehlermeldung, die ich erhalte, ist exit status 1: 'C:\Users\John' is not recognized as an internal or external command, operable program or batch file.

Alles (auflisten, verwenden, installieren) funktioniert, wenn ich meine Einstellungsdatei bearbeite, wie @ryan-mcguire jedoch vorschlägt.

Können diejenigen, die Probleme haben, nvm root ausführen und melden, was gedruckt wird?

nvm-root: C:\Users\Jeff Utz\AppData\Roaming\nvm

Mein Setup:

nvm v1.1.6
Windows 10 Pro (1703, Build 15063.540)
Gebietsschema: Englisch (USA)

Alle Befehle funktionieren mit Ausnahme von nvm use ... nvm on aktiviert nvm, gibt dann aber den exit status 1 Fehler aus

Versuchen Sie, den verkürzten Pfadnamen zu verwenden.
So finden Sie den verkürzten Pfad:
C:\Benutzer
dir /x

Vergessen Sie nicht, Windows neu zu starten.

error

Wie kann ich den Fehler beheben? Bitte teilen Sie Ihre Antwort mit..

@psiddharth709 - Bitte hör auf, dieselbe Frage in mehreren Ausgaben zu

Ich grabe die c:\nvm-Lösung. Ich mag es, meine Sachen zu haben, insb. unter Windows in einem Ordner, den ich leicht finden kann (c:\xammp ist mein Apache-Server). Habe es so gemacht und alles ist gut. Danke für die Mühe.

@coreybutler Sie können das Problem testen, indem Sie nvm in einem beliebigen Ordner mit Leerzeichen installieren. ZB in C:\Program files\nvm (der Fehler ist wie von XepherX oben gezeigt -- "'C:\Programm' wird nicht erkannt...").

Ich vermute, das Problem liegt darin, elevate.cmd mit exec.Command . Ich bin mir nicht sicher, weil ich nicht weiß, wie man Go debuggt. Aber wenn ich elevate.cmd umbenenne, erhalte ich eine Fehlermeldung wegen fehlender Datei und wenn ich elevate.cmd wiederherstelle, erhalte ich die Fehlermeldung "'C:\Programme' wird nicht erkannt..."

Dies scheint also kein Problem mit einem Zeichensatz zu sein. Und das Problem tritt sowohl in Windows 7 als auch in Windows 10 auf. Auch wenn cmd bereits erhöht ist (Als Administrator ausführen).

@coreybutler Leider immer noch das gleiche Problem für mich wie bei allen anderen in dieser Ausgabe, selbst wenn ich die Vorabversion 1.1.6 verwende.

Danke an alle! Ich entschuldige mich für die Verzögerungen bei der Veröffentlichung einer neuen Version.... Ich bin immer noch überfordert (und beschäftige mich).

@Eccenux - vielleicht elevate.cmd überprüfen. Go ist kompiliert, das Debuggen erfolgt also vor dem Build. Ich denke, der Elevate-Befehl ist ein wahrscheinlicherer Täter, wird aber die erste Chance bestätigen, die ich bekomme.

Ich hatte das gleiche Problem wie @davidrosevear. nvm install funktionierte mit 1.1.6, nvm use jedoch nicht. Lass mich wissen, ob ich überhaupt helfen kann @coreybutler.

Ich habe dieses Problem immer noch

@seanpoulter und alle anderen, die daran interessiert sind, mitzuhelfen....

Ich habe ein großes Problem - _viele_ neue Kunden strömen in mein Beratungsunternehmen. Das Problem: ungewöhnlich wenig Zeit, um an etwas anderem zu arbeiten. Alle zusätzlichen Augen, die sich dieses Problem ansehen könnten, wären sehr dankbar. Ich hatte immer noch keine Gelegenheit, mir den Vorschlag von elevate.cmd anzusehen, aber ich denke, das ist der Ausgangspunkt. 1.1.6 hat eine Menge nativer go-Zeichen, die entkommen, also sagt mein Bauchgefühl, dass das Problem nicht bei Go liegt ... aber der Elevate-Befehl wird nicht mit dem Rest des Codes getestet.

Glückwunsch! Das ist in der Tat ein großes Problem.

Schauen wir uns eine Community-Lösung und PR für diese an, während @coreybutler beschäftigt ist. Ich habe eine große PR für ein anderes Repo (vscode-jest), also wird es ein bisschen dauern, bis ich selbst in dieses eintauchen kann.

diese verkürzten Dateiversionen funktionieren nicht und auch die Installation von R in einem Pfad mit einem Leerzeichen
Wie können wir diese Probleme beheben. Wenn wir R in einem anderen Verzeichnis installieren, wird die Pfadvariable immer noch für alles andere verwendet?

Da die letzte Veröffentlichung hier schon eine Weile her ist, habe ich mich entschieden, in der Zwischenzeit einen mit dem Fix, den ich gerade eingereicht habe, auf meinem Fork zu veröffentlichen:
https://github.com/shadow/nvm-windows/releases/tag/1.1.7

Ich habe es gelöst, indem ich es nach C: nvm verschoben habe, aber ich würde gerne wissen, ob Korrekturen geplant sind ....

Danke @shadow, ich habe gerade deine Version von v 1.1.6 mit meinem Benutzernamen "Cody Swartz" auf meinem Weg installiert. Jetzt funktioniert nvm use ! 🎉

Ich habe gerade heute zum ersten Mal nvm für Windows heruntergeladen und installiert und bin auf dieses Problem gestoßen. Ich verwende Version 1.1.7. Fehlt mir hier etwas? Sollte dies nicht für v1.1.6 und höher behoben worden sein?

Habe auch dieses Problem. Das Ganze so ziemlich unbrauchbar zu machen.

BEARBEITEN: Es wurde mit dem ~ 1-Trick behoben.

Eine Lösung hierfür besteht darin, Ihre settings.txt zu bearbeiten und das alternative Benennungsschema für Windows-Ordner zu verwenden, das keine Leerzeichen enthält, was für meinen Fall war:

Um dies genauer zu erläutern, lautet die Konvertierung wie folgt: C:\Users\John Doe -> C:\Users\JOHND~1

Der Fehler bleibt bestehen. Es ist nicht gelöst. Verwenden von nvm 1.17

root: C:\PROGRA1nvm
Pfad: C:\PROGRA1\nodejs

Die oben in diesem Thread erwähnte Konfiguration ist falsch oder funktioniert zumindest bei mir nicht ... ;)
Für alle, die über dieses Problem stolpern.
Wenn Sie nvm und nodejs in C:\Program Files installiert haben, verwenden Sie einfach die folgende Konfiguration in settings.txt und es sollte funktionieren.

root: C:\PROGRA~1\nvm
path: C:\PROGRA~1\nodejs

@Laslo89 hat die richtige Antwort, das Leerzeichen durch ~ zu ersetzen funktioniert gut

Eine Lösung hierfür besteht darin, Ihre settings.txt zu bearbeiten und das alternative Benennungsschema für Windows-Ordner zu verwenden, das keine Leerzeichen enthält, was für meinen Fall war:

2

(settings.txt befindet sich standardmäßig in AppData\Roamingnvm)

Eine kurze Anmerkung für diejenigen, denen es an allgemeinen technischen Fähigkeiten wie mir mangelt. Wenn Sie dir *. /x in der Eingabeaufforderung verwenden, werden die Verzeichnisse innerhalb des aktuellen Speicherorts aufgelistet und Ihnen der 8.3-Formularname in der mittleren Spalte angezeigt. Mit diesem können Sie dann die Einstellungen wie oben beschrieben ändern. Allerdings wird, wie bereits erwähnt, aus Program Files PROGRA~1 .

Welche Website bietet das neueste Tutorial für Ionen.? Bitte sagen Sie mir.....

>

Wie ist dieses Problem immer noch nicht behoben?! Wenn es sich um eine Regression in 1.1.7 handelt, denken Sie vielleicht darüber nach, ein paar Integrations- / Unit- / Regressionstests hinzuzufügen, um den nicht so ungewöhnlichen Fall von Leerzeichen in Windows- (oder Linux-) Pfadnamen abzudecken, bevor Sie sie veröffentlichen ...

Braucht ihr Unterstützung dabei oder arbeitet schon jemand aktiv daran?

@julian-becker, als erstes möchte ich dich auf deinen aggressiven Start hinweisen:

Wie ist dieses Problem immer noch nicht behoben?!

Es ist unhöflich. Die Leute in der Open-Source-Community schulden Ihnen nichts von ihrer Zeit oder Aufmerksamkeit. Was macht Ihre Freizeit wertvoller als die Betreuer oder unsere? Es scheint, als hätten Sie nicht die Zeit damit verbracht, zu sehen, dass @coreybutler Ihre Frage bereits hier beantwortet hat :

Ich habe ein großes Problem - viele neue Kunden strömen in mein Beratungsunternehmen. Das Problem: ungewöhnlich wenig Zeit, um an etwas anderem zu arbeiten.

Sie haben auch die Lösung und den Fork verpasst, die @shadow geteilt hat.

Zweitens haben Sie einen hervorragenden Spielplan bekommen dafür , wie dies geschehen soll. Tu es! Wenn Sie die Zeit haben, werden alle, die dieses Problem beobachten, es zu schätzen wissen, dass es behoben wurde. Sehen Sie sich an, was @shadow getan hat, fügen Sie die Tests hinzu, starten Sie eine PR und wenden Sie sich hier an, um Hilfe bei der Codeüberprüfung zu erhalten. Jemand ist eigennützig genug, um beim Erledigen zu helfen. Viel Glück und melde dich hier, wenn du Hilfe brauchst! 👏

eine PR in Gang bringen

Um mögliche Verwirrung und doppelte Arbeit zu vermeiden, möchte ich darauf hinweisen, dass mein Fix bereits zusammengeführt wurde , es geht nur darum, ihn tatsächlich zu veröffentlichen.

Perfekt! Ich hatte auch nicht so viel Zeit zum Lesen. 😆

@shadow Ich bin gerade wieder auf dieses Problem gestoßen, eine Idee, wann es veröffentlicht wird?

@coreybutler Würde es Ihnen etwas

@coreybutler ist es möglich, die Veröffentlichung

Bitte lass das :)

Die Verwendung der von Shadow freigegebenen Fork (siehe Link oben) hat bei mir als einziges funktioniert. Vielen Dank!

Ich habe in allgemeinen Problemen auf die Veröffentlichung von @shadow verlinkt.

Tut mir leid, dass ich so lange brauche, um eine Veröffentlichung zu schneiden. Ich weiß, es scheint einfach, aber die Zeit war brutal für mich. Vielleicht schreibe ich eines Tages darüber.

1. Gehen Sie in cmd in Ihr Home-Verzeichnis und geben Sie dir/x ein, um den verkürzten Namen für diesen Ordner anzuzeigen
2.Ersetzen Sie dann Ihren Benutzernamen durch diesen verkürzten Namen in der Einstellung.txt
3.Es funktioniert

+1 Für alle, die die Problemumgehung beim Bearbeiten der settings.txt durchführen möchten, können Sie dies über die Befehlszeile versuchen, um den korrekt formatierten Pfad zu erhalten

cmd /c für %A in ("C:\Users\My Name With Spaces\AppData\Roamingnvm") do @echo %~sA

Vielen Dank, dieses Ding hat mir das Leben gerettet.

Gelöst!!

Für jemanden, der nicht mit der Methode ~1 von @kirkouimet arbeiten kann (Danke, Kumpel)
Öffnen Sie CMD, gehen Sie zum Ordner Benutzer und rufen Sie den verkürzten Ordnernamen ab.

und geben Sie ein

> dir\x

Annotation 2020-05-25 112714

Jetzt später nach dem Kopieren oder Notieren des Ordnernamens
Annotation 2020-05-25 113201

Ich hoffe es hilft

Gelöst!!

Für jemanden, der nicht mit der Methode ~1 von @kirkouimet arbeiten kann (Danke, Kumpel)
Öffnen Sie CMD, gehen Sie zum Ordner Benutzer und rufen Sie den verkürzten Ordnernamen ab.

und geben Sie ein

> dir\x

Annotation 2020-05-25 112714

Jetzt später nach dem Kopieren oder Notieren des Ordnernamens
Annotation 2020-05-25 113201

Ich hoffe es hilft

Vielen Dank an alle, die die settings.txt-Lösung vorgeschlagen haben, aber insbesondere Swarag-N für eine so gründliche Erklärung. Ich bin froh, dass ich hier gelandet bin und meinen Benutzerprofilordnernamen nicht geändert habe.
Danke

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

eliavmaman picture eliavmaman  ·  6Kommentare

tomByrer picture tomByrer  ·  4Kommentare

David263 picture David263  ·  3Kommentare

Deilan picture Deilan  ·  4Kommentare

hsali picture hsali  ·  4Kommentare