Linux上でAWSEC2で実行されているNode.JSアプリケーションがあり、fsモジュールを使用してHTMLテンプレートファイルを読み込みます。アプリケーションの現在の構造は次のとおりです。
/server.js
/templates/my-template.html
/services/template-reading-service.js
HTMLテンプレートは常にその場所にありますが、template-reading-serviceは別の場所(より深いサブディレクトリなど)に移動する場合があります。template-reading-service内から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」に変更しようとしましたが、それは機能しましたが、「1つ上のディレクトリ」に比べて解決しているだけだと思うので、壊れやすいようです。template-reading-serviceをより深いサブディレクトリに移動すると、そのパスが壊れます。
では、アプリケーションのルートに関連するファイルを参照する適切な方法は何ですか?