问题标签 [node-config]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 解析环境变量的正确方法
我基本上在我的所有项目中都使用node-config,并且大多数时候我遇到解析设置为环境变量的布尔值和数字的问题。
例如
默认.js
自定义环境变量.js
现在,明显的问题是,如果我用设置为环境变量的自定义值覆盖默认值,它们将是字符串值而不是数字或布尔值。所以现在,要确保在我的代码中类型是正确的。我总是必须进行类型转换,对于布尔值,请使用适当的库,例如yn。问题是我每次使用config.get()
例如+config.get("myNumber")
或yn(config.get("myBool"))
.
有没有更好更优雅的方法来做到这一点?
我看到的一种解决方案是将类型属性添加到环境变量中,因为它在此处使用格式完成。这将允许做这样的事情......
自定义环境变量.js
node-config
将处理类型转换,并且在获取它时无需一直在代码中执行此操作。当然,需要为布尔值实现一个适当的解析器,但那些已经存在并且可以在这里使用。
node.js - 如何在带有自定义配置界面的打字稿中使用 node-config?
这是如何在打字稿中使用节点配置的后续行动?因为我找不到合适的答案。
我对 TS 比较陌生,我正在尝试将我们的配置从 json 转换为 typescript,同时尝试在配置中合并类型。
我们目前拥有的是这样的:
在这里,我们可以获得所需的配置,但我们需要通过代码中的泛型来指定类型。我正在尝试合并(相对)更强的打字。
干转:
如您所见,最后一种形式将不起作用并导致编译时错误。我想以某种方式config
符合的形状,MyConfig
以便config.server.timeout
使用 strong type 成为可能number
。
我需要以某种方式扩展IConfig
接口MyConfig
或强制重新输入config
to IConfig & MyConfig
。
我的尝试:
这行得通,但不知何故对我来说感觉不对。
问题
- 强制使用
any
...可以以某种方式避免吗? - 需要做一些类似
import config from '../../core/config-schema';
-> 看起来很丑陋,不同文件的路径不同,需要所有项目合作者遵守约定的事情......是否可以保持原样import config from 'config';
并抽象出魔法? - 在编译时编译
default.ts
为default.js
withtsc
(因此 typescript 不是运行时依赖项)。已相应地更新了 env varNODE_CONFIG_DIR
。目前我这样做,但配置对象是使用额外的层次结构级别创建的。即config.server.timeout
,它变成了config.default.server.timeout
编辑:第三个问题已解决——见评论
node-config - node-config 始终返回默认设置
我正在将 node.js/express 应用程序移动到nest.js。应用程序的配置由 node-config (default.js
和主机特定的 js 文件)处理。我已将配置文件复制到新的应用程序文件夹,导入配置模块,并使用了一些config.get()
调用。旧应用程序运行良好,但使用 nest.js 我只能从 default.js 获得设置。有人知道为什么 node-config 不能与 nest.js 一起使用吗?
config.get() 总是返回来自 default.js 的值
node.js - 在生产中管理多个环境变量的最佳实践
尽管我不熟悉 DevOps 最佳实践,但我正在尝试提出一种可靠且有效的方法来管理生产中的多个变量。以下代表我目前的方法:
在哪里:
ENV_VAR.sh
API 1 和 2 是两个基于 nodejs 的应用程序,使用反向代理配置在同一台服务器上运行。如果服务器没有任何问题(例如意外关闭),我只需要不时地(重新)设置变量,SOURCE ENV_VAR.SH
以确保定义了新变量。
在继续这种方法之前,我想知道它是否完全正确,或者它是否有很大的缺陷。如果这种方法没问题,如何在package.json
部署任何应用程序的新版本时自动(重新)获取环境变量?(只是为了保证变量仍然被定义)
提前致谢。
node-config - node-config 将分隔符从点更改为冒号
我正在将我的配置从另一个库迁移到node-config。
我有两个问题:
- 旧库用于
config.get('a:b');
获取一些值,但node-config
使用单个点作为分隔符:config.get('a.b');
.
有没有办法配置它来:
节省我的时间和重构我的代码?
- 有没有办法设置运行时值。例如
config.set('key', 'val');
?
node.js - 使用 node-config 绕过 NODE_ENV
我正在尝试通过验证配置文件来测试我的配置文件,没什么花哨的,架构,环境列表,迭代它,加载配置并根据架构验证变量。
问题是,要做到这一点,我目前必须设置process.env.NODE_ENV
. 由于测试有自己的保留配置文件,这意味着如果测试并行运行,当其他测试加载配置时,测试可能会更改 NODE_ENV 变量,虽然这似乎不太可能发生,仍然打扰我。
一个简单的解决方案是能够告诉node-config
忽略环境变量,并使用给定的值,就像它一样require('config')('myNodeEnv')
,但我在 wiki 或文档中找不到类似的东西。最接近的是自定义环境变量,但这只会将问题转移到另一个变量。
javascript - 用玩笑模拟节点配置
我目前是第一次在 jest 和 nodejs 中介绍自己。我面临的问题是我必须从 nodejs 配置中模拟两个不同的值。
问题是第二个 mockReturnValue 覆盖了第一个。有没有可能将展位模拟彼此分开?
也许有类似的东西:
node.js - 在配置模块从 default.json 读取配置之前在节点中设置环境变量
相对较新的 JS 和节点,
要求: 需要在加载配置模块之前从安全存储读取环境变量后设置环境变量。
详细信息: 我们有一个问题:在配置模块启动并使用 default.js 分配值之前,我们需要在哪里从秘密存储中读取秘密并使其可用于节点环境。
我尝试拆分快速应用程序设置和初始化,并尝试在这些步骤之间阅读秘密,但无济于事。
无论如何,有没有办法在配置模块读取它们之前在 env 中注入秘密?
如果您需要更多信息,请告诉我。
javascript - 开玩笑地模拟特定的配置值
我有以下 default/config.js 文件
在我的 index.ts 中,我有
在我的单元测试中,我想测试这两种情况isVisible
,同时保持其他配置值不变。
我试过了
这对我不起作用,它不会覆盖isVisible
.
我知道我也可以config.get
像这样模拟函数config.get.mockReturnValue(false)
,但这会覆盖cronInterval
andqueueName
javascript - 有没有办法使用“config”npm 包定义智能感知的配置结构?
我正在使用config
带有 JS 或 TS 的 npm 模块。假设我有以下内容default.json
:
然后在我写的代码的某个地方
我想要的是在编码过程中我能得到什么的某种提示config
。
我可以想到常量的用法,例如
但也许还有其他方式,比手动更自动,因为我们已经在配置文件中拥有这些信息。
有没有办法做到这一点?