从node.js中的不同文件设置环境变量?

时间:2018-03-06 09:03:43

标签: javascript node.js express

我有两种不同的环境开发和生产

production.js

var config = {   
  production: {  
    session: {    
      key: 'the.express.session.id',    
      secret: 'something.super.secret'    
    },    
    database: 'mongodb://localhost:27018/test',    
    twitter: {    
      consumerKey: 'consumer Key',    
      consumerSecret: 'consumer Secret',    
      callbackURL: 'http://yoururl.com/auth/twitter/callback'    
    }    
  },    
}

development.js

var config = {    
  development: {    
    session: {    
      key: 'the.express.session.id',    
      secret: 'something.super.secret'    
    },    
    database: 'mongodb://localhost:27018/testdata',    
    twitter: {    
      consumerKey: 'consumer Key',    
      consumerSecret: 'consumer Secret',    
      callbackURL: 'http://yoururl.com/auth/twitter/callback'    
    }    
  },    
}

我已将这些文件存储在环境文件夹下,现在我想在server.js中调用这两个文件

server.js

var config = require('./environment');    
console.log(config);    

mongoose.connect(config.database);    
mongoose.connection.on('error', function (err) {    
  console.error('MongoDB connection error: ' + err);    
  process.exit(-1);    
});

如何在server.js中调用这些文件。如果我在命令提示符下运行set NODE_ENV=production这些应该运行production数据库,如果我在命令提示符set NODE_ENV=development中运行development数据库应该运行。帮助我

1 个答案:

答案 0 :(得分:0)

当require被赋予文件夹的路径时,它将在该文件夹中查找index.js文件;如果有,则使用它,如果没有,则失败。

最有意义的是(如果你可以控制文件夹)创建一个index.js文件,然后测试process.env:

if (process.env.NODE_ENV === 'production') {
  require('production.js');
} else {
  require('development.js');
}

node.js require all files in a folder?

https://www.twilio.com/blog/2017/08/working-with-environment-variables-in-node-js.html