Ich habe eine Node.js-Datei namens "server.js".Ausführen von Node.js Datei von außerhalb des Ordners bricht Dateipfad
Im Skript öffne ich einige Dateien mit so etwas wie:
var certPem = fs.readFileSync('cert_and_key_dev.pem', encoding='ascii');
Unter Verwendung des Bash-Shell, wenn ich cd in das Verzeichnis, in dem der server.js ist, und den Befehl ausführen:
[mybashshell] $ Knoten server.js
Es funktioniert, ich habe keinen Fehler. Der Server wird gestartet und ausgeführt.
Wenn ich jetzt aus dem Verzeichnis, in dem sich die server.js-Datei befindet, cd, dann führen Sie den gleichen Shell-Befehl erneut aus, um meinen Server zu starten.
Es beschwert sich über meinen Dateipfad zu meinem "cert_and_key_dev.pem" gebrochen wird.
Ich hatte nicht erwartet, dass so etwas passiert. Der Pfad, der in der Skriptdatei verwendet wird, sollte relativ zur Skriptdatei sein, nicht zu dem Ort, an dem ich meinen bash shell Befehl ausgeführt habe.
Irgendwelche Ideen?
Gibt es irgendwelche Vorteile zwischen dieser Methode und der von chbrown angegebenen Methode? Ich bin gespannt, welcher der richtige Weg ist. – Zhang
Es hängt wirklich vom Zweck ab. Wenn Sie mehr von einem "Server" ausführen, würde ich vorschlagen, in "__dirname" zu ändern. Wenn Sie zum Beispiel ein Ordner-Upload-Skript ausführen, würde ich vorschlagen, den Code von chbrawn zu verwenden. Sie müssen abwägen, wie oft Sie den aktuellen Arbeitsverzeichnispfad über den Verzeichnispfad des aktuellen Skripts verwenden möchten. –