Node.js设置要与everyauth一起使用的特定于环境的配置

我使用node.js express.js everyauth.js。我把所有的everyauth逻辑移动到一个模块文件

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

在这里我加载我的oAuth配置文件与密钥/秘密组合:

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

这些代码对于不同的环境是不同的 – 开发/临时/生产,因为回调到不同的URL。

Qu。我如何设置这些在环境配置过滤通过所有模块,或者我可以将路径直接传递到模块?

位于env:

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

转载注明原文:Node.js设置要与everyauth一起使用的特定于环境的配置 - 代码日志