it-swarm.com.de

fs: wie finde ich einen übergeordneten Ordner?

Wie schreibe ich das, um in den übergeordneten 2 Ebenen nach einer Datei zu suchen?

fs.readFile(__dirname + 'foo.bar');
166
fancy

Versuche dies:

fs.readFile(__dirname + '/../../foo.bar');

Beachten Sie den Schrägstrich am Anfang des relativen Pfads.

237
Andrew Hare

Verwenden Sie path.join http://nodejs.org/docs/v0.4.10/api/path.html#path.join

var path = require("path"),
    fs = require("fs");

fs.readFile(path.join(__dirname, '../..', 'foo.bar'));

path.join() behandelt führende/nachfolgende Schrägstriche für Sie und macht einfach das Richtige und Sie müssen sich nicht merken, wann nachfolgende Schrägstriche existieren und wann sie nicht existieren.

138
Alex Wayne

Ich weiß, dass es ein bisschen wählerisch ist, aber alle Antworten sind bis jetzt nicht ganz richtig.

Der Punkt von path.join () besteht darin, zu vermeiden, dass der Aufrufer wissen muss, welches Verzeichnistrennzeichen verwendet werden soll (wodurch die Code-Plattform agnostisch wird).

Technisch wäre die richtige Antwort so etwas wie:

var path = require("path");

fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));

Ich hätte dies als Kommentar zu Alex Waynes Antwort hinzugefügt, aber noch nicht genug Repräsentanten!

BEARBEITEN: gemäß Beobachtung von user1767586

86
smremde

Der einfachste Weg wäre, path.resolve :

path.resolve(__dirname, '..', '..');
50
Yan Foto

Anscheinend benötigen Sie das Modul path . ( path.normalize insbesondere)

var path = require("path"),
    fs = require("fs");

fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
12
Dominic Barnes

Wenn ein anderes Modul Ihr Modul anruft und Sie immer noch den Speicherort der ausgeführten Hauptdatei wissen möchten, können Sie eine Änderung des @ Jason-Codes verwenden:

var path = require('path'),
    __parentDir = path.dirname(process.mainModule.filename);

fs.readFile(__parentDir + '/foo.bar');

Auf diese Weise erhalten Sie den Speicherort des Skripts, das gerade ausgeführt wird.

11
Jeremy Battle

Wenn Sie nicht sicher sind, wo sich die Eltern befinden, erhalten Sie den Pfad.

var path = require('path'),
    __parentDir = path.dirname(module.parent.filename);

fs.readFile(__parentDir + '/foo.bar');
7
Jason Brumwell

Sie können verwenden

path.join(__dirname, '../..');
5
puneet

das wird auch funktionieren:

fs.readFile(`${__dirname}/../../foo.bar`);
1
Dhruvin modi