- Załóżmy, że w katalogu głównym projektu mam plik o nazwie „plik.xml”
-Załóżmy, że mam plik testowy w testach / o nazwie "test.js" i ma
const file = fs.readFileSync("../file.xml");
Jeśli teraz uruchomię node ./tests/test.jsz katalogu głównego mojego projektu, pojawi się komunikat ../file.xml nie istnieje. Jeśli uruchomię to samo polecenie z katalogu tests, to zadziała.
Wygląda na to, że fs.readFileSync jest względne w stosunku do katalogu, z którego skrypt jest wywoływany, a nie do miejsca, w którym faktycznie się znajduje. Gdybym napisał fs.readFileSync("./file.xml")w pliku test.js, wyglądałoby to bardziej zagmatwane i nie jest spójne ze ścieżkami względnymi w instrukcji wymagania, które są względne dla pliku.
Dlaczego to?
Jak mogę uniknąć konieczności przepisywania ścieżek w moim fs.readFileSync?
__dirnameniekoniecznie jest tym samym, co bieżący katalog roboczy, alefs.readFileSync()używa bieżącego katalogu roboczego. Bieżący katalog roboczy jest prawdopodobnie ustawiony na taki sam, jaki był w momencie uruchomienia node.