Wie schreibe ich das, um die übergeordneten 2 Ebenen wieder aufzusuchen und eine Datei zu finden?
fs.readFile(__dirname + 'foo.bar');
javascript
node.js
filesystems
schick
quelle
quelle
fs.readFile(__dirname + '/../../foo.bar');
es einfach und es funktionierte.__dirname
gehe dann davon aus, dass das'/foo/bar'
eher so war als'/foo/bar/'
.__dirname
aussehen kann/path/to/your/dir
, wenn Sie sagen ,__dirname + ".."
es ist/path/to/your/dir..
, was ein nicht vorhandenes Verzeichnis ist, statt/path/to/your
. Der Schrägstrich ist wichtig.Verwenden Sie path.join http://nodejs.org/docs/v0.4.10/api/path.html#path.join
path.join()
übernimmt führende / nachfolgende Schrägstriche für Sie und tut einfach das Richtige, und Sie müssen sich nicht daran erinnern, wann nachfolgende Schrägstriche vorhanden sind und wann nicht.quelle
path.join
ist der richtige Weg, die akzeptierte Antwort sollte nicht gefolgt werden, es selbst lösteslint
aufairbnb-base preset
, die Regel nicht-Weg-concat insbesondere__dirname
warhost/src/folder
und ich brauchtehost/folder
und das funktionierte für mich, nicht die OP-Antwort.path.join(__dirname, '..', '..', 'foo.bar')
Ich weiß, dass es ein bisschen wählerisch ist, aber alle Antworten sind bisher nicht ganz richtig.
Der Punkt von path.join () besteht darin, dass der Aufrufer nicht mehr wissen muss, welches Verzeichnistrennzeichen verwendet werden soll (wodurch die Codeplattform agnostisch wird).
Technisch gesehen wäre die richtige Antwort so etwas wie:
Ich hätte dies als Kommentar zu Alex Waynes Antwort hinzugefügt, aber noch nicht genug Wiederholungen!
BEARBEITEN: gemäß der Beobachtung von user1767586
quelle
Der einfachste Weg wäre zu verwenden
path.resolve
:quelle
../
dem Pfad anschließenSieht so aus, als ob Sie das
path
Modul benötigen . (path.normalize
insbesondere)quelle
Wenn ein anderes Modul Ihr Modul aufruft und Sie dennoch den Speicherort der ausgeführten Hauptdatei wissen möchten, können Sie eine Änderung des Codes von @ Jason verwenden:
Auf diese Weise erhalten Sie den Speicherort des Skripts, das tatsächlich ausgeführt wird.
quelle
Wenn Sie nicht sicher sind, wo sich die Eltern befinden, erhalten Sie den richtigen Weg.
quelle
Sie können verwenden
quelle
Ich verwende eine Elektronen-App und kann den übergeordneten Ordner über path.resolve () abrufen.
Elternteil 1 Stufe:
path.resolve(__dirname, '..') + '/'
Eltern 2 Ebenen:
path.resolve(__dirname, '..', '..') + '/'
quelle
das wird auch funktionieren:
quelle