SequelizeConnectionError:自签名证书

Dmi*_*hin 27 javascript postgresql backend express

我正在尝试连接到我在 Heroku 中设置的 PostgreSQL 数据库。

const { Sequelize, DataTypes, Model } = require("sequelize");

// DB Configuration
const sequelize = new Sequelize({
  database: "[wont'd show db]",
  username: "[won't show username]",
  password: "[won't show password]",
  host: "ec2-54-221-195-148.compute-1.amazonaws.com",
  port: 5432,
  dialect: "postgres",
  dialectOptions: {
    ssl: true,
  },
});

Run Code Online (Sandbox Code Playgroud)

这就是我得到的输出:

SequelizeConnectionError:自签名证书

Che*_*yDT 70

这是由于node-postgres版本 8 中的(意外)重大更改(请参阅此 GitHub 问题)。

解决方案是传递rejectUnauthorized: falsesequelize连接参数,如GitHub 用户 jsanta 所述

const sequelize = new Sequelize({
  database: "[wont'd show db]",
  username: "[won't show username]",
  password: "[won't show password]",
  host: "ec2-54-221-195-148.compute-1.amazonaws.com",
  port: 5432,
  dialect: "postgres",
  dialectOptions: {
    ssl: {
      require: true,
      rejectUnauthorized: false // <<<<<<< YOU NEED THIS
    }
  },
});
Run Code Online (Sandbox Code Playgroud)

  • 说真的,sequelize 团队真的了解已发布的 API 吗?就像……完全一样?(叹) (5认同)
  • 仅供参考,对于续集 6.3.5,我必须执行以下操作:`ssl: {rejectUnauthorized: false }`。 (2认同)

Ana*_*nas 9

就我而言,上述方法都不起作用,我使用连接字符串方法来应用 pg 配置,所以我设置了查询参数,sslmode=no-verify并且它起作用了

例子

postgres://myuser:mypassword@myhost:5432/mydatabasename?sslmode=no-verify
Run Code Online (Sandbox Code Playgroud)