なんだかGoodVibes

日々の勉強メモです。

【Node】実行しているスクリプトのパスを取得する

こんにちは。
メモです。

概要

以下のような階層のアプリを作成したとき。

/home
    | - /app
            | - /server.js
            | - /common.js
            | - /router
                       | - home.js
                       | - form.js

実行するファイルはserver.js、
common.jsに共通で使用する関数や定数を定義したとします。

home.js、form.jsからcommon.jsをrequireしたい!
でも、全てのファイルで

let common = require('../common.js');

ってのはしたくない(今後階層が深くなる可能性も考慮して)。
こんなときの解決策の1つです。


サンプルソース

path.resolveを使用します。
絶対パスを作成することもできるのですが、
実行しているスクリプトのパスを取得したり、
実行しているスクリプトのパスと指定した文字列を
接続したものを取得することもできるのです。

const path = require('path');

// 「/home/app」となる
console.log(path.resolve(''));

// 「/home/app/common.js」となる
console.log(path.resolve('common.js'));

common.jsは実行するスクリプトと同じ階層にあるのでこれを利用します。

const path = require('path');
let commonPath = require(path.resolve('common.js'));

これで、階層が深くなろうと、どのファイルからも同じ記載でrequireできます。



以上です。