Ich bin sehr neu in diesen Knoten Sachen, so gibt es wahrscheinlich eine wirklich einfache Antwort auf diese Frage ist aber sowieso ...Knoten App behandelt entkommen Zeichen in Pfad anders behandelt als global
Ich baue eine Anwendung, die für Eingabeaufforderungen ein Dateipfad Dieser Pfad wird durch Fallenlassen einer Datei in das Terminal-Fenster geliefert, die einen Pfad gibt mit Leerzeichen wie folgt entkommen:
Users/[username]/Desktop/test\ file.txt
ich dann jsonfile verwenden, diesen Weg zu einem Array hinzuzufügen und eine JSON
Datei zu schreiben. In dieser Datei wird nun der Pfad hat die Flucht entkommen und sieht wie folgt aus:
Users/[username]/Desktop/test\\ file.txt
Jetzt will ich von der JSON, diesen Weg zu packen und zeigen es in Finder
und das ist, wo ich verloren gehen. Ich benutze mac-open, um den Pfad zu enthüllen, indem ich die -R
Option übergebe und das funktioniert einwandfrei, während ich meinen Code unter Verwendung von node bin/my-code.js
testen und ausführen, aber sobald ich mit npm install -g .
installiere, bricht es. Die Installationsarbeiten und ich kann die App läuft (es gibt auch andere Funktionen, die gut funktionieren), aber jetzt, wenn ich versuche, den Weg zu zeigen, erhalte ich die Fehlermeldung:
{ [Error: Command failed: /bin/sh -c open -a "Finder" -R "/Users/[username]/Desktop/test\\\ file.txt"
The file /Users/[username]/Desktop/test\\ file.txt does not exist.
]
killed: false,
code: 1,
signal: null,
cmd: '/bin/sh -c open -a "Finder" -R "/Users/[username]/Desktop/test\\\\\\ file.txt"' }
ich die unterschiedlichen Mengen an Fluchten in den verschiedenen bemerkt habe Pfad Referenzen in den Fehler so meine Fragen sind:
- Warum ist das anders, wenn ich
node bin/my-code.js
Test und wenn ich global installieren und auf diese Weise laufen? - Gibt es eine Möglichkeit, dass ich die beiden so verhalten kann, wie ich es nicht jedes Mal installieren möchte, wenn ich meinen Code testen möchte?
- Gibt es eine robustere Möglichkeit zum Speichern und/oder Entkommen von Dateipfaden?
Sorry das hat ein bisschen weit verbreitet. Jeder Rat willkommen :)
Sie können vermeiden, zu entkommen, einfach Dateipfad in Anführungszeichen setzen. – loadaverage
@loadaverage - Ich denke, mein Problem war, dass es an zu vielen Orten entkommen konnte. '' '' Terminal''''' entkam den Leerzeichen, dann '' '' JSON'''' entkam der Escape, dann '' '' mac-open'''' entkam den entkommenen Fluchten! Am Ende hat '' '' 'mac-open'''' aus der Gleichung das Problem gelöst und ich habe ein bisschen auf dem Weg gelernt :) – popClingwrap