こんにちは。
メモです。
概要
以下のような階層のアプリを作成したとき。
/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できます。
以上です。