在heroku app中使用之前,我是否需要对环境变量进行验证?
作为一种常见的编程习惯,我们应该对可能出错的任何内容进行验证,但具体的技术可以有他们自己的习语,而且我对在heroku上部署的应用程序的最佳实践感兴趣。
例如,在快速应用程序中,如果执行验证,则显示错误页面,其名称为未初始化的变量:
app.get('/login', function(req, res) {
if (!process.env.OAUTH2_SERVER) {
res.render('env_error', { envVar : 'OAUTH2_SERVER' });
} else {
res.render('login', { oauth2Server : process.env.OAUTH2_SERVER});
}
});
并且没有验证它看起来像这样:
app.get('/login', function(req, res) {
res.render('login', { oauth2Server : process.env.OAUTH2_SERVER});
});
答案 0 :(得分:0)
在app启动时进行验证更有意义,因为对Heroku ENV变量的任何更改都意味着重新部署。
这里有大约30秒的代码:
var checkEnv = ['OAUTH2_SERVER', 'other env var you care about', 'and so on'];
checkEnv.forEach(function (v) {
if (typeof process.env[v] === "undefined") {
console.err('Required environment variable "' + v '" is not present. Exiting.');
process.exit(1);
}
});
您可以更改第3行的if,以根据您认为更干净的方式检查process.env[v] === undefined
。
修改您应该使用后者benchmarks faster。