如何在 .env 文件中定义数组/对象?

Posted

技术标签:

【中文标题】如何在 .env 文件中定义数组/对象?【英文标题】:How to define array/object in .env file? 【发布时间】:2020-12-29 22:46:52 【问题描述】:

以下是我的 javascript 对象:

window.options = 
    VAR1: VAL1,
    VAR2: VAL2,
    VA31: VAL3,
;

我希望在.env 文件中定义它(对象或数组)。我该怎么做?

【问题讨论】:

【参考方案1】:

.env 中的值只能是字符串。

简单的解决方法是将 env 值存储为逗号分隔值,例如:

SOME_VAR=VAL1,VAL2,VAL3

并将其拆分到您的 js 文件中:

const someVar = process.env.SOME_VAR.split(",");

console.log(someVar); // [ 'VAL1', 'VAL2', 'VAL3' ]

或者使用任何你想要的分隔符。


如果要存储对象,(不干净的)解决方法是将 JSON 字符串存储为 env 值,例如

OBJECT_VAL= "VAR1": "VAL1", "VAR2": "VAL2", "VA31": "VAL3" 

在你的 js 代码上,你可以解析 JSON:

const objectVal= JSON.parse(process.env.OBJECT_VAL);
console.log(objectVal); //  VAR1: 'VAL1', VAR2: 'VAL2', VA31: 'VAL3' 

我个人认为将 JSON 字符串存储在 .env 中并不是一个好主意,所以我想提出我的建议,以更好地存储 .env 值并将其用于您的 js 代码。

1。使用普通字符串值或分隔符分隔值存储 env

例如:

ARRAY=VAL1,VAL2,VAL3

VAR1=VALl1
VAR2=VALl2
VAR3=VALl3

2。制作一个js文件来处理环境变量

我将其命名为env.js,并在此文件上导出包含所有环境变量的对象

module.exports = 
    array: process.env.ARRAY.split(","),
    object: 
       var1: process.env.VAR1,
       var2: process.env.VAR2,
       var3: process.env.VAR3,
    

在其他文件上,你可以只导入env.js 并调用环境值

const env = require("path/to/env.js");

console.log(env.array); // [ 'VAL1', 'VAL2', 'VAL3' ]
console.log(env.object.var1); // "VAL1"

如果您的项目经常调用process.env,此解决方案可能会使您的代码更简洁,因为您无需在每次要访问环境变量时都调用process.

【讨论】:

以上是关于如何在 .env 文件中定义数组/对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义对象保存在包含更多自定义对象的数组中

javascript中定义一维数组,如何从TXT文件中为其赋值?

如何访问在 Mongoose 模式对象数组的另一个数组中定义的数组元素?

如何在 Typescript 的对象文字中定义“任何”数组? [复制]

OpenCV的Mat对象如何定义数组?

如何使用 TypeScript 在接口中定义对象的命名数组?