javascript:如何检测服务器端页面上的环境

时间:2018-10-02 14:48:18

标签: javascript node.js mailchimp production-environment

我继承了react / javascript应用程序,我想做一个小小的改动,以便在mailchimp-configuration.js中为产品和测试环境导出不同的mailchimp帐户变量。 (这些值是从src / server / index.js导入的)

我更新了mailchimp-configuration.js,以检查process.env.NODE_ENV =='production'。这行得通,但是由于我可以将本地沙箱(或登台)服务器“作为生产”运行,因此并不完全正确,在这种情况下,将使用生产帐户而不是测试帐户。我需要使用更确定性的信息,知道我们是在生产环境中运行还是在暂存或本地运行。

浏览器页面上的一个简单解决方案是通过window.location.href检查url,但是不幸的是,从mailchimp-configuration.js中,未定义window。

我想我可以在某个地方设置一个全局变量,但这是最后的手段。从服务器端检查环境的好方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

  

我需要使用更确定性的信息,以了解我们是在生产环境中运行还是与暂存或本地主机运行。

“在计算机上运行的nodejs实例”和“在计算机上运行的nodejs实例”在技术上没有区别。区分“您的本地主机”和“生产服务器”的唯一方法是告诉nodejs实例运行在何处,并由process.ENV完成。

  

我更新了mailchimp-configuration.js,以检查process.env.NODE_ENV =='production'。这行得通,但是由于我可以将本地沙箱(或登台)服务器“作为生产”运行,因此并不完全正确,在这种情况下,将使用生产帐户而不是测试帐户。

实际上,这是一种解决方法,如果您担心自己的秘密电子邮件帐户被测试服务器使用,则该秘密实际上应该进入秘密管理器中,例如Vault

答案 1 :(得分:0)

您可以使用节点的本机os函数之一,并根据某个值确定是否在dev-> Link

中本地运行节点

标准做法是根据您所处的环境(生产或开发)设置环境变量。

Collection<MyClass> findByDateBeginBetweenOrStartedWorkBetween(Instant firstDate, Instant lastDate, Instant firstDateAgain, Instant lastDateAgain);

default Collection<MyClass> findByDateBeginOrStartedWorkBetween(Instant firstDate, Instant lastDate) {
    return findByDateBeginBetweenOrStartedWorkBetween(firstDate, lastDate, firstDate, lastDate);
}

执行检查:

process.env.NODE_ENV