在 Heroku 中,是否有一种编程方式可以知道 node.js 应用程序是 运行?

Is there a programmatic way to know a node.js app is running in Heroku?

有没有我可以调用的变量或函数来了解 node.js 应用程序是否在 Heroku 中 运行?类似于:

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

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

process.env.HEROKU

在 heroku cli 上你会做: heroku config:set HEROKU=true

您也可以在网页界面设置,更多信息请查看heroku docs: https://devcenter.heroku.com/articles/config-vars

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

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

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

在这个具体案例中,我使用了 if test -d /app; then npm run build; fi,它也可以在 npm-scripts 中使用。