npm ローカルモジュール問題

これまでの手法

その時何を思ってこの方法を採用したのかは忘れてしまったが、今まではグローバル変数を用いて解決していた。

上記のGistでのパターン2である。

1
2
global.__base = __dirname + '/';
var Article = require(__base + 'app/models/article');

再考

そーいえばnpmにこの問題を解決する機能が導入されてたっけ、と思い試してみる。

しかしこの方法、ちょろっとした機能を追加するには大げさすぎて難儀に感じる。
僕の使い方ではデメリットのほうが勝る気が…。

他の手法を調べてみてもなかなかしっくりこない。
改めて難しい問題だと感じる。

結果

これまでの方法をテンプレートリテラルで書き直して使い続ける結論に至った。

1
2
global.__base = __dirname + '/';
const Article = require(`${__base}app/models/article`);

いつの日か光あれ!