如何解决数据库连接错误[SequelizeConnectionError]?

Syl*_*ska 4 javascript postgresql heroku node.js sequelize.js

我正在为数据库连接出错而苦苦挣扎:

Unable to connect to the database: ConnectionError [SequelizeConnectionError]: self signed certificate
Run Code Online (Sandbox Code Playgroud)

在这里你有我使用的代码 - 被注释的部分不起作用,错误仍然出现:


// const pg = require('pg');
// pg.defaults.ssl = true;

// const fs = require('fs');
// const rdsCa = fs.readFileSync(__dirname + '/rds-combined-ca-bundle.pem');


const sequelize = new Sequelize('xxxx', 'xxxxxx', 'xxxxxxxx',{
    host: 'xxxxxx.eu-west-1.compute.amazonaws.com',
    dialect: 'postgres',
    ssl: true,
    protocol: "postgres",

    logging: true,
        dialectOptions: {
        ssl: true
    }
});
sequelize
    .authenticate()
    .then(() => {
        console.log('Connection has been established successfully.');
    })
    .catch(err => {
        console.error('Unable to connect to the database:', err);
    });
Run Code Online (Sandbox Code Playgroud)

该数据库建立在 Heroku 上。

你能帮我解决这个问题吗?

Che*_*yDT 8

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

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

const sequelize = new Sequelize('xxxx', 'xxxxxx', 'xxxxxxxx',{
    host: 'xxxxxx.eu-west-1.compute.amazonaws.com',
    dialect: 'postgres',
    ssl: true,
    protocol: "postgres",

    logging: true,
    dialectOptions: {
        ssl: {
            require: true,
            rejectUnauthorized: false // <<<<<< YOU NEED THIS
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我在这里提交了相同的答案但我无法将此问题标记为重复并指出它,因为它尚未在那里被投票/接受。