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

Node.js中使用dotenv如何解析列表类型的环境变量?

dotenv 列表类型环境变量解析方案

dotenv 核心库默认遵循操作系统环境变量的设计规范,仅会将所有配置值解析为字符串类型,本身没有内置复杂类型(数组、对象等)的解析能力,你可以按需选择以下两种实现方案:

方案1:逗号分隔(最推荐,兼容性最高)

符合通用环境变量写法规范,不需要额外自定义逻辑,适配所有工具链:

.env 配置写法

# 列表元素用英文逗号分隔即可
FOO=a,b
BAR=c

解析代码

import * as dotenv from 'dotenv'

dotenv.config()
// 解析为数组,空值场景下兜底为空数组
const FOO = process.env.FOO?.split(',') ?? []

for (const entry of FOO) {
  // 执行相关逻辑
}

方案2:自定义解析支持FOO[]数组语法

如果你想要用类似FOO[]=xxx的数组写法,可以自己加一层简单的解析逻辑,不需要引入额外依赖:

.env 配置写法

FOO[]=a
FOO[]=b
BAR=c

解析代码

import * as dotenv from 'dotenv'
import fs from 'node:fs'

// 读取并解析.env原始内容
const envRaw = fs.readFileSync('.env', 'utf8')
const rawParsed = dotenv.parse(envRaw)
const processedEnv = {}

for (const [key, value] of Object.entries(rawParsed)) {
  // 识别[]结尾的数组配置
  if (key.endsWith('[]')) {
    const realKey = key.slice(0, -2)
    if (!processedEnv[realKey]) processedEnv[realKey] = []
    processedEnv[realKey].push(value)
  } else {
    processedEnv[key] = value
  }
}

// 合并到process.env,不会覆盖已有的系统环境变量
Object.assign(process.env, processedEnv)

// 直接使用解析好的数组
for (const entry of process.env.FOO) {
  // 执行相关逻辑
}

补充说明

如果你坚持要用FOO=['a','b']的写法,也可以用JSON.parse解析,需要注意配置里的字符串必须用双引号包裹,避免语法报错:

# 必须用双引号,不能用单引号
FOO=["a","b"]
const FOO = JSON.parse(process.env.FOO ?? '[]')

该方案容错性较低,配置写错很容易导致解析报错,不推荐生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:45:03