__filename と __dirname でモジュールのパスを取得する
Node.js のプログラム内から __filename や __dirname を参照すると、現在実行中のモジュール(jsファイル)の絶対パスや、そのファイルが含まれているディレクトリの絶対パスを取得することができます。
__filename: 現在実行中のモジュールの絶対パス__dirname: 現在実行中のモジュールの親ディレクトリの絶対パス
console.log(__filename);
console.log(__dirname);D:\sandbox\node\sample.js
D:\sandbox\nodeカレントディレクトリを取得する process.cwd()
__dirname と似たようなものに、カレントディレクトリを調べる process.cwd() がありますが、こちらは現在のプロセスのカレントディレクトリを調べるものなので、JavaScript ファイルが置かれているパスとは関係がありません。
もちろん、JavaScript ファイルがあるディレクトリで node コマンドを実行すれば __dirname と同じ結果になりますが、process.chdir() などでカレントディレクトリを変更すると、process.cwd() の結果は変化します。
console.log(__dirname);
console.log(process.cwd());
process.chdir('..'); // 上のディレクトリへ移動
console.log(__dirname);
console.log(process.cwd());D:\sandbox\node
D:\sandbox\node
D:\sandbox\node
D:\sandbox