无法访问 Heroku 上的 Web 服务器

Unable to access web server on Heroku

我正在关注 this tutorial/guide。在本地,它可以工作,使用 localhost 作为域,使用 8080 作为端口。

这里是本地配置:

"dashboard" : {
    "oauthSecret": `${process.env.oauthSecret}`,
    "callbackURL": `http://localhost:8080/callback`,
    "sessionSecret": "fakesessionsecret",
    "domain": "localhost",
    "port": 8080
  },

但现在,我想在 Heroku 上使用该应用程序,并通过 https://project-name.herokuapp.com 或自定义域访问 Web 仪表板,我已经将其链接到所提供的 DNS,格式为 dashboard.example.com.

localhost and/or 该端口不适用于 Heroku,因此我不确定要将其更改为什么才能使其正常工作。我已经尝试将域更改为 xxx.herokudns.com,将端口更改为 process.env.PORT,将域更改为我在 Heroku 中设置的自定义域 - 但它们都会导致应用程序崩溃,状态为 503 当我访问 URL。

据我所知,这些代码中使用了配置域和端口:

const express = require("express");
const app = express();
const passport = require("passport");

passport.use(new Strategy({
    clientID: client.appInfo.id,
    clientSecret: config.dashboard.oauthSecret, //from configuration
    callbackURL: config.dashboard.callbackURL, //from configuration
    scope: ["identify", "guilds"]
  }
...
app.locals.domain = config.dashboard.domain;
...
app.listen(client.config.dashboard.port);

那么如何从 Heroku 访问 Web 应用程序呢?

当您收到 503 时,您是否正在检查您的 Heroku 日志?他们应该提供有关导致崩溃的具体信息。

域应为 dashboard.example.com,端口应为 process.env.PORT。更好的是,使用 dotenv 和 .env 文件在本地定义环境变量,并使用 Heroku 的 "Settings" 选项卡在生产环境中设置环境变量(在这种情况下,只需 domainport 已在每次应用启动时为您设置)。