Node.js加载json配置文件时自动替换环境变量的实现方法
实现方案
你可以自己实现一个极简的JSON配置加载函数,不需要修改原有启动逻辑,也不用依赖sed脚本,只需替换原来项目中直接加载JSON配置的代码即可。
无额外依赖的原生实现
核心逻辑是先读取配置文件的原始字符串,通过正则匹配所有%变量名%格式的占位符,替换为对应环境变量值后再解析为JSON对象:
const fs = require('fs'); function loadConfig(configPath) { // 读取配置文件原始内容 const rawConfig = fs.readFileSync(configPath, 'utf8'); // 替换所有占位符 const processedConfig = rawConfig.replace(/%([A-Z0-9_]+)%/g, (_, varName) => { // 若需要缺失环境变量时直接报错启动失败,可替换为下面的逻辑 // return process.env[varName] ?? (() => { throw new Error(`缺失必填环境变量: ${varName}`) })() return process.env[varName] ?? _; }); // 解析为JSON对象返回 return JSON.parse(processedConfig); } // 调用示例,替换原有 require('./config.json') 即可 const config = loadConfig('./config.json');
使用说明
- Docker侧不需要做任何修改,原来怎么给容器传
DBHOST、DBPORT等环境变量,现在保持不变即可,Node进程会自动读取process.env中的变量完成替换 - 注意:如果你的配置值本身包含
%字符,可根据实际场景调整正则匹配规则,避免误替换
内容的提问来源于stack exchange,提问作者brettnem
相关产品推荐
相关产品推荐

