如何在Red Hat OpenShift Node.js应用中使用dotenv访问本地开发环境变量
疑问解答
疑问一:能否自动适配开发/生产环境取值?
可以,完全符合你的预期:
- 开发环境:本地项目根目录存在被
.gitignore忽略的.env文件,dotenv会自动将文件内的配置项加载到process.env中,你直接用process.env.XXX就能读到本地配置。 - 生产环境:你不会把
.env文件提交到代码仓库,OpenShift部署的环境中不存在该文件,dotenv.config()执行时找不到文件就不会做任何额外操作,process.env里的值就是OpenShift控制台配置的环境变量,直接读取即可。
疑问二:会不会影响OpenShift原有环境变量读取逻辑?
完全不会。
dotenv的核心逻辑是不会覆盖已经存在于process.env中的变量,只有当process.env中不存在对应配置项时,才会从.env文件中读取补充。OpenShift提前注入到process.env的所有环境变量都会保留原有值,不会被dotenv修改,原有逻辑完全不受影响。
落地步骤
你可以按照以下步骤完成改造:
- 安装dotenv依赖:
npm install dotenv --save
如果不想在生产环境保留该依赖,也可以安装为开发依赖:
npm install dotenv --save-dev
- 在服务端入口文件(如
index.js、app.js)的最顶部添加初始化代码:
require('dotenv').config()
如果需要严格限定仅开发环境加载,也可以改成条件判断写法,非必需:
if (process.env.NODE_ENV !== 'production') { require('dotenv').config() }
- 在项目根目录新建
.env文件,把原local_settings中的配置按KEY=VALUE格式写入:
SITE_TITLE=你的站点名称 SITE_DESCRIPTION=站点描述 # 其他所有需要的本地配置项
- 把
.env路径添加到项目的.gitignore文件中,确保不会被提交到代码仓库。 - 删除原有代码中所有环境判断、
online_status相关的if/else逻辑,所有配置统一直接用process.env.XXX读取即可。
内容的提问来源于stack exchange,提问作者user1063287
相关产品推荐
相关产品推荐

