Node.js 具有多个 key/values 的环境变量可由 node.js 读取?

Node.js environment variable with multiple key/values readable by node.js?

我想创建一个 .env 文件,它有一个环境变量,提供多个 key/values 可读 node.js。

例如:

USERNAME=firstname:John,lastname:Doe

然后是这样的:

require('dotenv').config()

let myEnvVariable = process.env.USERNAME
let firstName = myEnvVariable.firstname
let lastName = myEnvVariable.lastname

console.log(fistName, lastName)
// expected result: John Doe

这样的事情可能吗?如果是这样,我该怎么做?

我从来没有听说过这样的事情...但是您可以为变量定义自己的格式,这样您就可以实现类似的事情...

按照您的示例,您可以使用可以执行此操作的解析器...

const USERNAME="firstname:John,lastname:Doe,phone:countryCode:55,phone:number:99999999999";

const parse = str => {
  const output = {};
  str.split(',').forEach(part => {
    const keys = part.split(':');
    const value = keys.pop();
    let def = output;
    keys.forEach((key, idx) => {
      if (idx === keys.length - 1) return def[key] = value;
      if (!def[key]) def[key] = {};
      def = def[key];
    });
  });
  
  return output;
};

console.log(parse(USERNAME));

我从来没有听说过这样的事情...但是您可以解析您自己创建的格式...

如果您只将 JSON 作为环境变量值,这可能是最简单的。然后,您可以只获取环境变量的值并对它执行 JSON.parse() 并得到一个完整的 Javascript 对象作为结果。然后,您不必发明自己的格式,也不必编写自己的解析代码。

在您的环境中:

USERNAME={"firstname":"John","lastname":"Doe"}

然后,在您的代码中:

const user = JSON.parse(process.env.USERNAME);
console.log(user.firstname);
console.log(user.lastname);

仅供参考,这正是 JSON 发明的目的 - 一种纯文本标准格式,用于表达可以从几乎任何语言轻松生成或解析的数据。