gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:14:56 31 4
gpt4 key购买 nike

我正在使用 node-config基本上在我所有的项目中,大部分时间我都会遇到解析设置为环境变量的 bool 值和数字的问题。

例如。

default.js



module.exports = { 
myNumber = 10,
myBool = true
}

custom-environment-variables.js



module.exports = { 
myNumber = "MY_NUMBER",
myBool = "MY_BOOL"
}

现在,明显的问题是,如果我使用设置为环境变量的自定义值覆盖默认值,它们将是字符串值而不是数字或 bool 值。所以现在,要确保我的代码中的类型是正确的。我总是必须进行类型转换,对于 bool 值,请使用适当的库,例如 yn .问题是我每次使用 config.get() 时都必须进行此转换例如 +config.get("myNumber")yn(config.get("myBool")) .

有没有更好,更优雅的方法来做到这一点?

我看到的一种解决方案是在完成时向环境变量添加类型属性 here与格式。这将允许做这样的事情......

custom-environment-variables.js



module.exports = { 
myNumber = {
name: "MY_NUMBER",
type: "number"
},
myBool = {
name: "MY_BOOL",
type: "boolean"
}
}
node-config将处理类型转换,并且在获取它时无需一直在代码中执行此操作。当然,需要为 bool 值实现适当的解析器,但那些已经存在并且可以在这里使用。

最佳答案

默认情况下,环境变量将被解析为字符串。
在 node-config 中,我们可以使用 __format 覆盖此行为如下所示。

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

举一个容易关联的例子。

配置/默认.json

{
"service": {
"autostart": false
}
}

自定义环境变量.json
{
"service": {
"autostart": {
"__name": "AUTOSTART",
"__format": "json"
}
}
}

现在我们可以在想要覆盖时传递环境变量,并且基本类型不需要类型对话。

关于node.js - 解析环境变量的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59599304/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com