无法将 postgres/react 应用程序部署到 Heroku

Unable to deploy postgres/react application to Heroku

我已经被困了一段时间了,我似乎无法弄清楚这个错误是什么。将我的应用程序部署到 Heroku,构建成功,我正在取回静态文件,但问题是应用程序无法连接到 Heroku sql 服务器。这些是我目前遇到的错误。

2021-02-19T21:59:42.585708+00:00 app[web.1]: Alright you got it! running on 37052
2021-02-19T21:59:42.615527+00:00 app[web.1]: Failed to prune sessions: getaddrinfo ENOTFOUND undefined
2021-02-19T22:01:17.248861+00:00 app[web.1]: Error: getaddrinfo ENOTFOUND undefined
2021-02-19T22:01:17.248874+00:00 app[web.1]: at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26) {
2021-02-19T22:01:17.248876+00:00 app[web.1]: errno: -3008,
2021-02-19T22:01:17.248878+00:00 app[web.1]: code: 'ENOTFOUND',
2021-02-19T22:01:17.248878+00:00 app[web.1]: syscall: 'getaddrinfo',
2021-02-19T22:01:17.248879+00:00 app[web.1]: hostname: 'undefined'
2021-02-19T22:01:17.248879+00:00 app[web.1]: }

这是我的 server.js 文件。

const express = require(`express`);
const passport = require(`passport`);
const session = require(`express-session`);
const postGresqlStore = require("connect-pg-simple")(session);
const keys = require("./config/keys");
const usersRouter = require(`./src/routes/users`);
const flash = require(`connect-flash`);

const initializePassport = require("./passportConfig");
initializePassport(passport);

const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(
  session({
    store: new postGresqlStore({
      conString: `postgres://${keys.DB_USER}:${keys.DB_PASSWORD}@${keys.DB_HOST}:${keys.DB_PORT}/${keys.DB_DATABASE}`,
    }),
    secret: keys.SESSION_SECRET,
    resave: false,
    saveUninitialized: false,
    cookie: { maxAge: 30 * 24 * 60 * 60 * 1000 },
  })
);
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(usersRouter);

const path = require("path");
if (process.env.NODE_ENV === "production") {
  // Serve any static files
  app.use(express.static("client/build"));
  // Handle React routing, return all requests to React app
  app.get("*", function (req, res) {
    res.sendFile(path.join(__dirname, "client", "build", "index.html"));
  });
}

const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
  console.log(`Alright you got it! running on ${PORT}`);
});

和我的DB.config

const keys = require(`./config/keys`);

const { Pool } = require("pg");

const devConfig = `postgres://${keys.DB_USER}:${keys.DB_PASSWORD}@${keys.DB_HOST}:${keys.DB_PORT}/${keys.DB_DATABASE}`;
const proConfig = process.env.DATABASE_URL;

const pool = new Pool({
  connectionString:
    process.env.NODE.ENV === `production` ? proConfig : devConfig,
});

module.exports = { pool };

有什么建议或代码的其他部分需要查看吗? 谢谢!

您需要在 db.config 中使用 process.env.NODE_ENV。这是 heroku 的默认设置。