一尘不染

相对于Node.JS中的应用程序根目录引用文件的正确方法

linux

我有一个在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”,但这确实可行,但是它似乎很脆弱,因为我想这只是相对于“上一个目录”而言。如果我将模板读取服务移至更深的子目录,则该路径将中断。

那么,相对于应用程序的根目录引用文件的正确方法是什么?


阅读 221

收藏
2020-06-03

共1个答案

一尘不染

尝试

var templateContent = fs.readFileSync(path.join(__dirname, '../templates') + '/my-template.html', 'utf8');
2020-06-03