Предположим, у нас есть терминал, выполняющий файл node.js, и терминал открыт в
/home/user
И путь к node.js файлу
/home/user/test
Тогда мы можем получить относительный путь к файлу двумя разными способами
var path = require("path");
let path1=path.join('__dirname','../relative/path/file.txt');
fs.readFile(path1);
let path2=path.join('./','../relative/path/file.txt');
fs.readFile(path1);
Здесь '__ dirname' представляет собой фактический путь, по которому текущий node.js присутствует исполняемый файл, т.е.
/ home / user / test
и '. /' представляет путь, откуда node.js файл выполняется, т.е.
/ home / user
Путь, по которому терминал в настоящее время находится и выполняет данный node.js файл
Следовательно,
path1 будет представлять путь относительно каталога, который содержит node.js файл
path1='/home/user/test/../relative/path/file.txt'
= '/home/user/test/relative/path/file.txt'
path2 будет представлять реальный путь к месту, откуда запускается терминал
path2='/home/user/../relative/path/file.txt'
='/home/relative/path/file.txt'
Разница между __dirname и ./ в Node.js
Путь Node.js Документация