将节点/快速应用程序设置为活动或生产模式的最佳方法

我目前正在将我的节点/快速应用程序转换为生产部署,并且作为其中的一部分,我需要使其在生产友好的模式下运行(例如,对stdOut进行更less的debugging,将日志写入不同的地方,告诉错误发生时用户less等)。

我正在为此付出一点努力,因为每当我设置一个几乎任何types的variables来调用“生产”模式时,它都不会影响程序运行。

在开发模式下启动时,我的代码通过Gulp运行,并运行以下脚本:

#!/usr/bin/env node var debug = require('debug')('ascema'); var app = require('../app'); app.set('port', process.env.PORT || 3000); var server = app.listen(app.get('port'), function() { debug('Express server listening on port ' + server.address().port); }); 

正如你所知道的,这只是从快递生成器生成的启动脚本。

为了在实时模式下运行它,我创build了一个供服务器使用的替代启动(无论如何我几乎不能使用gulp),live.js运行这个:

 #!/usr/bin/env node var app = require('./app.js'); app.set('env', 'production'); console.log('running on Port 3000'); var server = app.listen(3000); 

但是,当我在应用程序中的任何地方使用app.get('env') (例如,在app.js或其各种依赖项中),它仍然返回“开发”,所以我的生产任务都不会发生。

我在这里做错了什么?

非常感谢。

执行NODE_ENV应用程序时,必须在命令行上设置NODE_ENVvariables。

例如:

 NODE_ENV=production node app.js 

而且, NODE_ENV是一个环境variables,所以如果将它设置在服务器上的环境中,那么每次执行应用程序时都不需要提供它,所以node app.js将会执行。

你可以在`/ etc / environment'文件中设置你的环境variables。 这里有更多的细节: https : //help.ubuntu.com/community/EnvironmentVariables