【发布时间】:2022-01-03 09:57:51
【问题描述】:
我正在重新审视一个有一段时间没有更新的项目。
在production/online 环境中,它使用定义在以下位置的环境变量:
openshift online console > applications > deployments > my node app > environment
在development/offline 环境中,它使用在以下位置定义的环境变量:
./src/js/my_modules/local_settings(此文件被.gitignore忽略)
代码看起来像:
// check which environment we are in
if (process.env.MONGODB_USER) {
var online_status = "online";
}
else {
var online_status = "offline";
}
// if online, use environment variables defined in red hat openshift
if (online_status === 'online') {
var site_title = process.env.SITE_TITLE;
var site_description = process.env.SITE_DESCRIPTION;
//etc
}
// if offline, get settings from a local file
else if (online_status === 'offline') {
var local_settings = require('./src/js/my_modules/local_settings');
var site_title = local_settings.SITE_TITLE;
var site_description = local_settings.SITE_DESCRIPTION;
// etc
}
我想通过以下方式在我的本地项目仓库中安装dotenv package:
npm install dotenv
这样我可以:
- 将我的本地设置放在项目根目录下的
.env文件中(在.gitignore中忽略) - 能够使用
process.env.SOME_VARIABLE而不是local_settings.SOME_VARIABLE - 去掉一些
if/else块,因为这两种情况都会指向process.env.SOME_VARIABLE
我对这会如何影响在线环境感到有些困惑。
看到production/online 和development/offline 环境都将使用:
var some_variable = process.env.SOME_VARIABLE_HERE
应用程序是否会自动知道:
- 开发时查看本地
.env文件? - 在生产中查看 Red Hat 环境变量?
并且会在 server-side 文件的开头添加所需的实例化:
require('dotenv').config()
不知何故让 Red Hat OpenShift 吓坏了(因为它似乎已经有了自己的“东西”来解决对 OpenShift 控制台中定义的相关值的 process.env.SOME_VARIABLE_HERE 的引用)?
【问题讨论】:
-
你能在 openshift 中创建更多的环境,还是只有 dev 和 prod 可用?
-
对不起,我不明白问题背后的含义,我在本地环境中离线开发,然后推送到更新在线/生产应用程序的 github repo。我不确定在这种情况下“创建更多环境”意味着什么,它将如何解决问题,以及如果可能的话,我将如何做。对任何误解深表歉意。
-
好的。一些企业需要一个称为测试或登台的中间环境。在这种环境中,另一个团队验证并验证开发人员所做的工作没有错误并符合所需的功能。这个团队被称为:质量保证、测试人员或质量保证
标签: node.js express environment-variables openshift-online