【发布时间】:2020-09-16 21:13:57
【问题描述】:
我目前正在将我的 node/express 应用程序投入生产部署,作为其中的一部分,我需要让它在生产友好模式下运行(例如,减少对 stdOut 的调试,将日志写入不同的地点,在发生错误时少告诉用户等)。
我对此有点挣扎,因为每当我设置几乎任何类型的变量来调用“生产”模式时,它都不会在程序运行时产生影响。
在开发模式下启动时,我的代码通过 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);
});
如您所知,这只是 express 生成器生成的启动脚本。
为了在实时模式下运行它,我创建了一个可供服务器使用的替代启动(我几乎无法使用 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.js 或它的各种依赖项中)使用 app.get('env') 时,它仍然返回“开发”,因此我的生产任务都不会发生。
我在这里做错了什么?
非常感谢。
【问题讨论】: