Обычно вы создаете путь для каждого местоположения относительно каталога, в котором находится ваш код, и относитесь к нужному местоположению относительно него. Расположение вашего кода будет передано в модуль кода как __dirname
. Затем вы можете объединить этот относительный путь с __dirname
, чтобы построить полный путь к целевому местоположению, не делая никаких предположений о том, где или как установлен модуль.
Итак, если ваш код находится в src
каталог, в котором __dirname
указывает. Чтобы получить доступ к каталогу data
ниже каталога src
, вы должны использовать:
let srcDataDir = path.join(__dirname, "data");
Чтобы получить доступ к каталогу dist/data
, вы должны использовать:
let distDataDir = path.join(__dirname, '../dist/data');
Чтобы получить доступ к каталогу данных более высокого уровня, где находится MY_DATA_FILES.json
, вы должны использовать:
let topDataDir = path.join(__dirname, '../data');
Как вы можете видеть, ключ заключается в том, чтобы построить все относительно местоположения, которое вы знаете __dirname
передается коду в качестве местоположения собственной директории кода.
В модулях Javascript вы не хотите делать какие-либо предположения о текущем рабочем каталоге, потому что это может буквально быть чем угодно. Это контролируется самой программой верхнего уровня и тем, как она была запущена, и это не то, на что сам модуль может полагаться или делать предположения. Но __dirname
всегда будет полным путем к каталогу, из которого выполняется код вашего модуля.