JavaScript
nodejs

NodeJSで、requireされたのか、単体で起動されたのか判断する方法

expressで、テスト用にappインスタンスだけ取得したいけど、app.listenを同じファイルに書きたいって!!いう状況に陥った。

(app.jsbin/wwwみたいに分けるのがベストっぽいけど、あまり好きじゃない。)


require.mainmoduleで判別

requireされ、モジュールとして動いてるときは、require.main !== module

単体で起動されているときは、require.main === moduleとなる。


コード化


sample.js

if (require.main === module) {

console.log('直接起動されたよ!');
} else {
console.log('requireされて、モジュールとして動いてるよ!');
}