-Предположим, у меня есть файл в корне моего проекта под названием "file.xml"
-Предположим, у меня есть тестовый файл в tests / под названием "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()использует текущий рабочий каталог. Текущий рабочий каталог, скорее всего, будет таким, каким он был при запуске node.