You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node-config如何指定运行环境并加载对应环境配置文件

node-config 多环境配置落地实现方案

第一步:调整配置文件目录与命名规范

node-config 有默认的配置加载规则,你之前创建的dev.config.json/qa.config.json命名不符合规范,需要按以下规则调整:

  • 在项目根目录新建config文件夹,所有配置文件都放在这个目录下
  • 新增default.json:存放所有环境通用的公共配置,不需要每个环境重复写
  • 分环境配置文件直接以环境名命名:dev.json、qa.json、stage.json、prod.json,只存放对应环境和公共配置有差异的配置项
  • 可选新增local.json:存放本地开发的个人自定义配置,把这个文件加入.gitignore,不会提交到代码仓库,避免影响其他人的开发配置

配置加载时会自动做合并覆盖:对应环境的配置会覆盖default.json里的同名字段,不需要你自己写合并逻辑。

第二步:指定当前运行环境

node-config 优先读取NODE_CONFIG_ENV环境变量判断当前运行环境,只有当这个变量不存在时,才会 fallback 读取NODE_ENV的值,比你之前直接用NODE_ENV区分环境的方式更清晰,不会和其他依赖包对NODE_ENV的默认行为冲突。

本地开发启动脚本配置

为了兼容Windows/macOS/Linux跨平台设置环境变量,先安装跨平台环境变量工具:

npm i cross-env -D

然后修改package.json里的启动脚本:

"scripts": {
  "start-dev": "cross-env NODE_CONFIG_ENV=dev node ./bin/www",
  "start-qa": "cross-env NODE_CONFIG_ENV=qa node ./bin/www",
  "start-stage": "cross-env NODE_CONFIG_ENV=stage node ./bin/www",
  "start-prod": "cross-env NODE_CONFIG_ENV=prod node ./bin/www"
}

部署环境指定方式

如果是部署在AWS EC2/ECS/EKS等环境,不需要修改启动命令,直接在服务的环境变量配置里添加NODE_CONFIG_ENV=对应环境名即可,node-config会自动读取。

第三步:代码中读取配置

在业务代码里直接引入node-config包,就可以读取当前环境合并后的完整配置,不需要自己判断环境写加载逻辑:

// 引入config包,建议在业务代码最前面引入
const config = require('config');

// 读取指定配置项,比如读取服务端口、数据库地址等
const serverPort = config.get('server.port');
const dbHost = config.get('database.host');

// 如果需要获取当前运行环境值,可以调用工具方法
const currentEnv = config.util.getEnv('NODE_CONFIG_ENV');

兼容旧代码与敏感配置处理

  • 如果你之前的老代码里大量用process.env.NODE_ENV做环境判断,不需要全量修改,只需要在项目入口文件(比如./bin/www)的最顶部加一行代码即可兼容:
const config = require('config');
process.env.NODE_ENV = config.util.getEnv('NODE_CONFIG_ENV');
  • 不建议把数据库密码、API密钥这类敏感信息硬编码到配置文件提交到代码库,这类配置可以继续从AWS Parameter Store读取,在应用启动时把读取到的敏感值覆盖到config实例上即可;也可以用node-config的环境变量占位符能力,在配置文件里写"dbPassword": "${DB_PASSWORD}",启动时注入DB_PASSWORD环境变量,node-config会自动替换占位符。

内容的提问来源于stack exchange,提问作者Sandeep Parashar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:51:24