【问题标题】:Bypass NODE_ENV with node-config使用 node-config 绕过 NODE_ENV
【发布时间】:2020-08-05 10:03:27
【问题描述】:

我正在尝试通过验证配置文件来测试我的配置文件,没什么花哨的,架构,环境列表,迭代它,加载配置并根据架构验证变量。

问题是,为此,我目前必须设置process.env.NODE_ENV。由于测试有自己的保留配置文件,这意味着如果测试以并行方式运行,当其他测试加载配置时,测试可能会更改 NODE_ENV 变量,虽然这似乎不太可能发生,还是烦我。

一个简单的解决方案是能够告诉node-config 忽略环境变量,并像使用给定值一样使用给定值,例如require('config')('myNodeEnv'),但我在wiki 中也找不到类似的东西文档。最接近的是自定义环境变量,但这只会将问题转移到另一个变量。

【问题讨论】:

    标签: node.js node-config


    【解决方案1】:

    测试应该加载相同的“基础”测试配置,而不是拥有自己的配置文件。

    当特定测试需要覆盖特定值时,它应该覆盖该特定值而不是整个配置(不用说,我们需要确保在测试完成时修复被覆盖的值)。

    当我们按照上述方式工作时,它会减少任何冲突的机会,因为不同测试在完全相同的时刻覆盖完全相同的值的机会非常低。

    另一种选择是单独运行测试,例如:

    npm run test:suite1
    npm run test:suite2
    

    其中test:suite1 可以在scripts 部分下的package.json 中声明,例如:

    "test:suite1": "NODE_ENV=test-conf-1 tests/suite1.js",
    ...
    

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 2017-06-02
      • 2017-07-08
      • 1970-01-01
      • 2018-07-23
      相关资源
      最近更新 更多