是什么让我在明确知道什么环境下最简单的方法是什么? 例如,我想你做下面建立连接取决于我在什么ENV到Redis的。这可以通过命令行来完成?
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
var r = require("redis").createClient(6379,'127.0.0.1');
});
app.configure('production', function(){
app.use(express.errorHandler());
r = redis.createClient(6379,'46.137.195.230', { detect_buffers: true });
});
你的做法是好的,但你可以让更多的东西通用的,比如对于存储在Redis的配置数据在一个文件中或通过类似的论点主机和端口:
node app.js REDIS_HOST REDIS_PORT
然后在你的应用程序,你可以使用process.argv抓住他们:
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
var r = require("redis").createClient(process.argv[2], process.argv[3]);
});
app.configure('production', function(){
app.use(express.errorHandler());
var r = require("redis").createClient(process.argv[2], process.argv[3], { detect_buffers: true });
});
更新:
快递会知道你是在什么环境下看NODE_ENV变量(process.env.NODE_ENV): https://github.com/visionmedia/express/blob/master/lib/application.js#L55
:您可以开始像这样的应用程序时设置变量NODE_ENV=production node app.js
(推荐),快递代码之前在您的节点应用手动设置process.env.NODE_ENV或撇开这的环境变量在〜/ .profile文件像里卡多说过。
为了扩大使用config.json文件的想法:
// config.json
{
"development": {
"redisPort": 6379,
"redisHost": "127.0.0.1",
"errorHandlerOptions": {"dumpExceptions": true, "showStack": true}
},
"production": {
"redisPort": 6379,
"redisHost": "46.137.195.230",
"errorHandlerOptions": {"dumpExceptions": false, "showStack": false}
}
}
加载基于ENV配置文件和切换。
// app.js
var config = require('./config.json')[app.get('env')];
app.use(express.errorHandler(config.errorHandlerOptions));
var r = require("redis").createClient(config.redisPort,config.redisHost);
确保NODE_ENV设置每个服务器(见其他答案,一个办法:在NODE_ENV=production node app.js
),并且这样的配置变量有适当的其上运行的服务器的设置。
刚刚成立的NODE_ENV
环境变量,以production
或development
,如快递文档看出: http://expressjs.com/guide.html#configuration
我刚刚离开NODE_ENV=development
在开发机的~/.profile
(.bashrc或者在Linux上的.bash_profile),并做同样的production
人。
我做了财产以后更全面的通过订购这些参数的来源:
var env = process.argv[2] || process.env.NODE_ENV || 'development'
var mongourl = process.argv[3] || process.env.NODE_DB || 'mongodb://localhost/default'
var port = process.env.PORT || 9001
这样,您就可以使用命令行参数,ENV设置和默认值。
使用配置模块,允许创建多个配置文件https://www.npmjs.com/package/config
例如default.json,production.json
并启动服务器
出口集NODE_ENV =生产&& NPM启动