-Припустимо, у мене є файл у корені мого проекту під назвою "file.xml"
-Припустимо, у мене є файл тесту в тестах, який називається "test.js", і він є
const file = fs.readFileSync("../file.xml");
Якщо я зараз запускаю node ./tests/test.jsз кореня мого проекту, він говорить ../file.xml не існує. Якщо я запускаю ту саму команду з каталогу тестів, це працює.
Здається, fs.readFileSync є відносно каталогу, з якого викликається скрипт, замість того, де скрипт насправді. Якби я писав fs.readFileSync("./file.xml")у test.js, це виглядало б більш заплутаним і не узгоджувалось із відносними шляхами в операторі require, які є відносними до файлу.
Чому це?
Як мені уникнути необхідності переписувати шляхи у моєму fs.readFileSync?
__dirnameне обов'язково збігається з поточним робочим каталогом, алеfs.readFileSync()використовує поточний робочий каталог. Поточний робочий каталог, ймовірно, встановлений таким, яким він був під час запуску вузла.