1. ホーム
  2. node.js

[解決済み] Node.jsでeveryauthで使用する環境固有の設定をする

2022-07-26 23:01:18

質問

node.js + express.js + everyauth.jsを使用しています。私はすべてのeveryauthのロジックをモジュールファイルに移動しました。

var login = require('./lib/everyauthLogin');

この中に、キーとシークレットの組み合わせでoAuth設定ファイルをロードします。

var conf = require('./conf');
.....
twitter: {
    consumerKey: 'ABC', 
    consumerSecret: '123'
}

これらのコードは、コールバックが異なるURLにあるため、開発/ステージング/本番という異なる環境ごとに異なっています。

質問です。 どのように私はすべてのモジュールを介してフィルタリングするために環境設定でこれらを設定するのですか、私はモジュールに直接パスを渡すことができますか?

環境設定に設定する。

app.configure('development', function(){
  app.set('configPath', './confLocal');
});

app.configure('production', function(){
  app.set('configPath', './confProduction');
});

var conf = require(app.get('configPath'));

パス入力

app.configure('production', function(){
  var login = require('./lib/everyauthLogin', {configPath: './confProduction'});
});

理解できたでしょうか?

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

私の解決策です。

を使用してアプリをロードします。

NODE_ENV=production node app.js

次に設定 config.js をオブジェクトではなく、関数として設定します。

module.exports = function(){
    switch(process.env.NODE_ENV){
        case 'development':
            return {dev setting};

        case 'production':
            return {prod settings};

        default:
            return {error or other settings};
    }
};

次に、Jans のソリューションに従って、ファイルを読み込んで新しいインスタンスを作成し、必要に応じて値を渡します。 process.env.NODE_ENV はグローバルなので必要ありません。

var Config = require('./conf'),
    conf = new Config();

そして、前と全く同じように設定オブジェクトのプロパティにアクセスすることができます。

conf.twitter.consumerKey