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

如何在Node.js中读取.conf文件并提取指定变量值?

在Node.js中高效提取.conf文件变量值的方案

分享两个比逐行读取更简洁可靠的实现方案:

无依赖正则批量匹配

直接读取整个文件内容,用正则一次性捕获所有符合规则的变量,自动跳过注释行,效率更高:

const fs = require('fs').promises;

async function parseConfFile(filePath) {
  const content = await fs.readFile(filePath, 'utf8');
  // 匹配规则:跳过#开头的注释行,捕获 VARIABLE = 'value' 格式的变量
  const regex = /^\s*(?!#)\s*([A-Z_]+)\s*=\s*'([^']+)'\s*(?:#.*)?$/gm;
  const variables = {};
  let match;
  while ((match = regex.exec(content)) !== null) {
    variables[match[1]] = match[2];
  }
  return variables;
}

// 调用示例
parseConfFile('./your-config.conf')
  .then(vars => console.log('提取的变量:', vars))
  .catch(err => console.error('解析出错:', err));

正则说明

  • (?!#):确保不是注释行开头
  • ([A-Z_]+):捕获变量名(可根据实际规则调整,比如支持小写就改成[a-zA-Z_]+)
  • '([^']+)':捕获单引号包裹的变量值,若要支持转义单引号,可把[^']+改成[^'\\]*(?:\\.[^'\\]*)*
  • (?:#.*)?:兼容行尾的注释(比如VAR = 'val' # 备注)

用轻量库简化解析

如果不想自己维护正则,用dotenv库可以快速搞定——它原本是处理.env文件,但完美适配你的.conf格式,还自动忽略注释:

先安装依赖:

npm install dotenv

然后写代码:

const dotenv = require('dotenv');
const fs = require('fs');

// 读取文件并自定义解析规则,去掉值的单引号
const config = dotenv.parse(fs.readFileSync('./your-config.conf', 'utf8'), {
  parse: (value) => {
    if (value.startsWith("'") && value.endsWith("'")) {
      return value.slice(1, -1);
    }
    return value;
  }
});

console.log('提取的变量:', config);

方案对比

  • 正则方案:无外部依赖,完全可控,适合需要定制匹配逻辑的场景
  • dotenv方案:代码极简,维护成本低,适合标准格式的配置文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:15:08