【问题标题】:Is there a programmatic way to know a node.js app is running in Heroku?是否有一种编程方式可以知道 node.js 应用程序正在 Heroku 中运行?
【发布时间】:2015-04-12 20:56:24
【问题描述】:

是否有一些变量或函数我可以调用以了解 node.js 应用程序是否在 Heroku 中运行?比如:

if (process.heroku)
  console.log("I'm in Heroku!");

【问题讨论】:

    标签: node.js heroku


    【解决方案1】:

    您可以在不设置自定义环境变量的情况下执行此操作。你可以这样做:

    if (process.env._ && process.env._.indexOf("heroku") !== -1)
       console.log("I'm in Heroku!");
    

    这是可能的,因为在 Heroku dyno 上,_ 环境变量设置为 /app/.heroku/node/bin/node

    【讨论】:

    • 这个答案不正确(不确定它是如何获得 7 次赞成并被接受的)。 indexOf 将返回 0 作为有效结果,其评估结果为 false。它返回 -1 表示没有结果会评估为真。这些都不正确。要修复,请更改为 (process.env._.indexOf("heroku") !== -1)
    • 它可能获得了赞成票,因为它引导人们朝着正确的方向前进。花了一段时间,但我已经用你的修复 @Joel 更正了我的答案。
    【解决方案2】:

    您使用通常的环境变量。 只需在您的 heroku 实例上设置一些变量并检查:

    process.env.HEROKU

    在 heroku cli 上,您可以: heroku config:set HEROKU=true

    您也可以在 Web 界面上进行设置,请参阅 heroku 文档了解更多信息: https://devcenter.heroku.com/articles/config-vars

    【讨论】:

    • 我认为这是一个更清洁的解决方案。
    【解决方案3】:

    在这个特定情况下,我使用了if test -d /app; then npm run build; fi,它也可以在 npm-scripts 中使用。

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 2017-11-28
      • 2011-10-17
      • 2014-08-30
      • 2012-10-21
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      相关资源
      最近更新 更多