无法使用 ssl 连接到 Heroku Postgres

时间:2021-05-18 23:56:39

标签: node.js postgresql ssl heroku heroku-postgres

我在 Heroku 上托管了一个 node.js 后端和 Postgres 数据库。 Heroku 开始需要 ssl 后,对数据库的任何请求都停止工作。我遵循了记录在案的修复 here,但我仍然遇到错误。请求只是挂起并最终作为 CORS 错误而出错。

“从源 [...] 访问 [...] 处的 XMLHttpRequest 已被 CORS 策略阻止:请求的资源上不存在‘Access-Control-Allow-Origin’标头。”

数据库请求在浏览器和 Insomnia 中都可以在本地运行。我也尝试创建新的 Heroku 项目,但在发出数据库请求时仍然遇到相同的错误。

这是我的 db.js:

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

const client = new Client({
    connectionString: process.env.DATABASE_URL,
    ssl: {
        rejectUnauthorized: false
    }
});

client.connect();


module.exports = client;

app.js:

const express = require("express");
const cors = require("cors");
const app = express();
app.use(cors());
app.use(express.json());

// add logging system
const morgan = require("morgan");
app.use(morgan("tiny"));

const villagersRoutes = require("./routes/villagers");
const wakeRoutes = require("./routes/wake");

app.use("/villagers", villagersRoutes);
app.use("/", wakeRoutes);

/** 404 Not Found handler. */

app.use(function (req, res, next) {
  const err = new Error("Not Found");
  err.status = 404;
  next(err);
});

/** Generic error handler. */

app.use(function (err, req, res, next) {
  if (err.stack) console.error(err.stack);

  res.status(err.status || 500).json({
    message: err.message,
  });
});


module.exports = app;

server.js:

const app = require("./app");

app.listen(process.env.PORT || 5000, function () {
  console.log("Server is listening on port 5000");
});

0 个答案:

没有答案