【问题标题】:javascript: how to detect environment on server side pagesjavascript:如何检测服务器端页面上的环境
【发布时间】:2019-03-07 17:30:14
【问题描述】:

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

我更新了 mailchimp-configuration.js 以检查 process.env.NODE_ENV == 'production'。这可行,但不太正确,因为我可以将本地沙箱(或登台)服务器“作为生产”运行,在这种情况下,将使用生产帐户而不是测试帐户。我需要使用更具决定性的东西来了解我们是在生产环境中运行还是在暂存环境中运行。

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

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

谢谢!

【问题讨论】:

    标签: javascript node.js mailchimp production-environment


    【解决方案1】:

    我需要使用更确定的东西来了解我们是在生产环境中运行还是在暂存环境中运行。

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

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

    实际上这是要走的路,如果您担心您的秘密电子邮件帐户被测试服务器使用,那么该秘密实际上应该进入秘密管理器,例如Vault

    【讨论】:

      【解决方案2】:

      如果你在dev本地运行node,你可以使用node的一个原生os函数,根据某个值来判断 -> Link

      标准做法是为您所处的相应环境(生产或开发)设置一个环境变量。

      process.env.NODE_ENV 
      

      进行检查:

      if (process.env.NODE_ENV === 'development') {
      // do dev stuff
      } 
      if (process.env.NODE_ENV === 'production') {
      //do production stuff
      }
      

      【讨论】:

      • 谢谢@iLuvLogix!听起来我的方法通常的方法(很高兴知道,因为所有这些对我来说都是新的!)所以在这种情况下,我需要解决我们的暂存环境运行的问题通过更新 staging 以具有不同的 NODE_ENV 值来进行生产,或者保持原样并添加/使用第二个变量来设置 mailchimp 信息。谢谢!
      • @Diane Kaplan:很高兴 ;) 希望你以后在 node 上玩得开心——这个框架的学习曲线相当陡峭!
      猜你喜欢
      • 2010-11-13
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多