Node.js 解析环境变量的正确方法

Node.js 解析环境变量的正确方法,node.js,node-config,Node.js,Node Config,我基本上在我所有的项目中都在使用它,大多数时候我都会遇到解析布尔值和设置为环境变量的数字的问题 例如 default.js module.exports={ myNumber=10, myBool=true } custom-environment-variables.js module.exports={ myNumber=“我的号码”, myBool=“MY_BOOL” } 现在,明显的问题是,如果我用设置为环境变量的自定义值覆盖默认值,它们将是字符串值,而不是数字或布尔值。现在,确保我

我基本上在我所有的项目中都在使用它,大多数时候我都会遇到解析布尔值和设置为环境变量的数字的问题

例如

default.js

module.exports={
myNumber=10,
myBool=true
}
custom-environment-variables.js

module.exports={
myNumber=“我的号码”,
myBool=“MY_BOOL”
}
现在,明显的问题是,如果我用设置为环境变量的自定义值覆盖默认值,它们将是字符串值,而不是数字或布尔值。现在,确保我的代码中的类型是正确的。我总是要做类型转换,对于布尔人,使用合适的库,例如。问题是我每次使用
config.get()
时都必须进行这种转换,例如
+config.get(“myNumber”)
yn(config.get(“myBool”)

有没有更好更优雅的方法

我看到的一个解决方案是在使用format时向环境变量添加type属性。这样就可以做这样的事情

custom-environment-variables.js

module.exports={
myNumber={
姓名:“我的号码”,
类型:“编号”
},
myBool={
姓名:“我的兄弟”,
类型:“布尔”
}
}

节点配置
将处理类型转换,并且在获取类型转换时,不需要在代码中一直这样做。当然,需要为布尔值实现一个合适的解析器,但这些解析器已经存在,并且可以在这里使用。

默认情况下,环境变量将被解析为字符串。 在节点配置中,我们可以使用
\u格式
覆盖此行为,如下所示

我们不需要任何额外的图书馆。普通的json数据类型,如布尔、数字、嵌套json等,应该可以很好地工作

举一个简单易懂的例子

config/default.json

{
  "service": {
    "autostart": false
  }
}
custom-environment-variables.json

{
  "service": {
    "autostart": {
      "__name": "AUTOSTART",
      "__format": "json"
    }
  }
}

现在,我们可以在需要重写时传递环境变量,基本类型不需要类型对话。

这一功能现在在v3.3.2中得到支持,请参见

有一个与此相关的问题,即在数字和布尔值的情况下,使
\u格式
更具体一些,但一般来说,您的答案也可以