1. ホーム
  2. node.js

[解決済み] requireへの引数の渡し方(モジュールのロード時)

2022-06-28 14:35:11

質問

requireでモジュールを読み込む際に、引数を渡すことは可能ですか?

私はログイン機能を提供するlogin.jsというモジュールを持っています。これはデータベース接続を必要とし、私は同じデータベース接続を私のすべてのモジュールで使用したいです。今、私はデータベース接続を指定できる関数login.setDatabase(...)をエクスポートし、それはうまく動作します。しかし、私はむしろモジュールをロードするときにデータベースと他の要件を渡したいのです。

var db = ...
var login = require("./login.js")(db);

私はNodeJSでかなり新しいですし、通常はJavaとSpring Frameworkを使用して開発しているので、はい...これはコンストラクタ注入です :) 私が上で提供したコードのようなことをすることは可能ですか?

どのように解決するのですか?

のコメントに基づいて この回答 のコメントに基づいて、私はあなたがやろうとしていることをこのようにやっています。

module.exports = function (app, db) {
    var module = {};

    module.auth = function (req, res) {
        // This will be available 'outside'.
        // Authy stuff that can be used outside...
    };

    // Other stuff...
    module.pickle = function(cucumber, herbs, vinegar) {
        // This will be available 'outside'.
        // Pickling stuff...
    };

    function jarThemPickles(pickle, jar) {
        // This will be NOT available 'outside'.
        // Pickling stuff...

        return pickleJar;
    };

    return module;
};

私はほとんどすべてのモジュールをこのように構成しています。 私にとってはうまくいっているように見えます。