Jak to napisać, aby wrócić do poziomów nadrzędnych 2 i znaleźć plik?
fs.readFile(__dirname + 'foo.bar');
javascript
node.js
filesystems
fantazyjny
źródło
źródło
fs.readFile(__dirname + '/../../foo.bar');
i zadziałało.__dirname
było coś w stylu'/foo/bar'
raczej niż'/foo/bar/'
.__dirname
może wyglądać/path/to/your/dir
, jeśli powiesz, że__dirname + ".."
to/path/to/your/dir..
, co jest katalog nie istnieje, zamiast/path/to/your
. Cięcie jest ważne.Użyj path.join http://nodejs.org/docs/v0.4.10/api/path.html#path.join
path.join()
poradzi sobie z początkowymi / końcowymi ukośnikami i po prostu zrobi właściwą rzecz i nie musisz próbować pamiętać, kiedy końcowe ukośniki istnieją, a kiedy nie.źródło
path.join
jest poprawny sposób, zaakceptowanej odpowiedź nie powinna być stosowana, to nawet wyzwalaeslint
onairbnb-base preset
, zasada no-path-concat w szczególności__dirname
byłhost/src/folder
a ja potrzebowałemhost/folder
i ten pracował dla mnie, a nie odpowiedź OP.path.join(__dirname, '..', '..', 'foo.bar')
Wiem, że to trochę wybredne, ale wszystkie dotychczasowe odpowiedzi nie są całkiem poprawne.
Celem path.join () jest wyeliminowanie potrzeby, aby program wywołujący wiedział, którego separatora katalogów należy użyć (co czyni platformę kodu agnostyczną).
Technicznie prawidłowa odpowiedź brzmi:
Dodałbym to jako komentarz do odpowiedzi Alexa Wayne'a, ale jeszcze za mało przedstawicieli!
EDYCJA: zgodnie z obserwacją użytkownika1767586
źródło
Najprostszym sposobem byłoby użycie
path.resolve
:źródło
../
do ścieżkiWygląda na to, że będziesz potrzebował
path
modułu. (path.normalize
w szczególności)źródło
Jeśli inny moduł dzwoni do Ciebie i nadal chcesz znać lokalizację uruchamianego pliku głównego, możesz użyć modyfikacji kodu @ Jason:
W ten sposób uzyskasz lokalizację uruchamianego skryptu.
źródło
Jeśli nie masz pozytywnego zdania na temat tego, gdzie jest rodzic, dostaniesz ścieżkę;
źródło
Możesz użyć
źródło
korzystam z aplikacji elektronowej i mogę pobrać folder nadrzędny za pomocą path.resolve ()
poziom rodzica 1:
path.resolve(__dirname, '..') + '/'
rodzic 2 poziomy:
path.resolve(__dirname, '..', '..') + '/'
źródło
zadziała to również:
źródło