设置变量(如果尚未将其设置为环境变量)

时间:2018-09-03 17:36:06

标签: node.js docker

我要在测试环境中运行的节点上有一组测试。

在开发中,我想针对localhost运行,但是在容器中运行时,我要针对通过process.env变量设置的测试环境运行。

是否可以将主机URL全局设置为localhost,除非已将其设置为环境变量?

我知道我可能会写一些语句来检查是否设置了env变量,但是我想知道是否有关于此变量或通用策略的最佳实践。

谢谢

3 个答案:

答案 0 :(得分:1)

您可以检查env变量是否可用以及是否未将其设置为localhost。例子

if (!process.env.servicehost) {
    process.env.servicehost='localhost';
}

建议您将其封装到一个返回基本服务URL的方法中。示例:https://testhost.com/myApi,然后您的测试套件可以连接到特定的API路径。使用以上方法在启动阶段创建此基本服务URL。

答案 1 :(得分:1)

这里没有最佳实践,因为最佳实践在很大程度上取决于您的开发/生产管道。

一种方法是使用global对象:

global.host = process.env.testhost || localhost;  // localhost already set to something

如果未定义localhost,它将提供testhost

现在所有模块都可以使用host(如果愿意,可以使用global.host)。

答案 2 :(得分:1)

根据十二要素应用程序原则,最好的方法是将应用程序配置存储在环境变量中,而不是在应用程序配置中或诸如此类,尤其是在使用Docker时。也许您应该从两个选项中选择最佳方法,例如:

const URI = process.env.URI || 'localhost';