我有一个在 AWS EC2 上的 Linux 上运行的 Node.JS 应用程序,它使用 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”并且有效,但它似乎很脆弱,因为我想这只是相对于“向上一个目录”进行解析。如果我将模板阅读服务移动到更深的子目录,则该路径将中断。
那么,相对于应用程序的根目录引用文件的正确方法是什么?