Node.js的,表达的,使用开发与生产app.configure(Node.js, express

2019-06-24 17:19发布

是什么让我在明确知道什么环境下最简单的方法是什么? 例如,我想你做下面建立连接取决于我在什么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 });
});

Answer 1:

你的做法是好的,但你可以让更多的东西通用的,比如对于存储在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文件像里卡多说过。



Answer 2:

为了扩大使用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 ),并且这样的配置变量有适当的其上运行的服务器的设置。



Answer 3:

刚刚成立的NODE_ENV环境变量,以productiondevelopment ,如快递文档看出: http://expressjs.com/guide.html#configuration

我刚刚离开NODE_ENV=development在开发机的~/.profile (.bashrc或者在Linux上的.bash_profile),并做同样的production人。



Answer 4:

我做了财产以后更全面的通过订购这些参数的来源:

    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设置和默认值。



Answer 5:

使用配置模块,允许创建多个配置文件https://www.npmjs.com/package/config

例如default.json,production.json

并启动服务器

出口集NODE_ENV =生产&& NPM启动



文章来源: Node.js, express, and using development versus production in app.configure