如何在 .env 文件中定义 array/object?

How to define array/object in .env file?

以下是我的Javascript对象:

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

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

value in .env value 只能是字符串。

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

SOME_VAR=VAL1,VAL2,VAL3

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

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

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

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


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

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' }

我个人不认为在 .env 中存储 JSON 字符串是个好主意,所以我想就存储 .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 文件中定义数组的两种方法是

  1. //In the .env file SOME_ARRAY = A , B ,C
  2. /In the .env file SOME_ARRAY = '["A","B","C"]' //In the code const convertedArray = JSON.parse(process.env.SOME_ARRAY)

为了隐藏对象,不幸的是 .env 文件不支持对象,因为它们除了字符串之外不理解任何东西,但我们可以将对象保留为 json 格式,我们可以将其解析为我们想要的文件夹

MY_OBJECT = { "A":"One","B":"two","C":"three" } 
//we can access it in our code by follows 
const myObject = JSON.parse(process.env.MY_OBJECT)
//we can also access a certain property of that object like follows
const myObject = (JSON.parse(process.env.MY_OBJECT)).A