我正在重新审视一个有一段时间没有更新的项目。
在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 包:
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 吓坏了(因为它似乎已经有了自己的“东西”来解决对process.env.SOME_VARIABLE_HERE
OpenShift 控制台中定义的相关值的引用)?