У меня есть приложение Node.JS, работающее на Linux в AWS EC2, которое использует модуль fs для чтения в файлах шаблонов HTML. Вот текущая структура приложения:
/server.js
/templates/my-template.html
/services/template-reading-service.js
Шаблоны HTML всегда будут находиться в этом месте, однако служба чтения шаблонов может перемещаться в разные местоположения (более глубокие подкаталоги и т.д.). Внутри службы чтения шаблонов я использую fs.readFileSync() для загрузки файла, вот так:
var templateContent = fs.readFileSync('./templates/my-template.html', 'utf8');
Это вызывает следующую ошибку:
Error: ENOENT, no such file or directory './templates/my-template.html'
Я предполагаю, что это потому, что путь "./" разрешается в директорию "/services/", а не в корне приложения. Я также попытался изменить путь к "../templates/my-template.html", и это сработало, но оно кажется хрупким, потому что я полагаю, что это просто решение относительно "одного каталога". Если я перемещу службу чтения шаблонов в более глубокий подкаталог, этот путь будет разорван.
Итак, каков правильный способ ссылки на файлы относительно корня приложения?