将节点/快速应用程序设置为活动或生产模式的最佳方法
我目前正在将我的节点/快速应用程序转换为生产部署,并且作为其中的一部分,我需要使其在生产友好的模式下运行(例如,对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_ENV
variables。
例如:
NODE_ENV=production node app.js
而且, NODE_ENV
是一个环境variables,所以如果将它设置在服务器上的环境中,那么每次执行应用程序时都不需要提供它,所以node app.js
将会执行。
你可以在`/ etc / environment'文件中设置你的环境variables。 这里有更多的细节: https : //help.ubuntu.com/community/EnvironmentVariables