我有一个在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”,但这确实可行,但是它似乎很脆弱,因为我想这只是相对于“上一个目录”而言。如果我将模板读取服务移至更深的子目录,则该路径将中断。
那么,相对于应用程序的根目录引用文件的正确方法是什么?
尝试
var templateContent = fs.readFileSync(path.join(__dirname, '../templates') + '/my-template.html', 'utf8');