NestJS [TypeOrmModule] Не удается подключиться к базе данных

#postgresql #nestjs #typeorm

#postgresql #nestjs #typeorm

Вопрос:

Я хочу подключиться к удаленной базе данных PostgreSQL (которая размещается на Heroku) и получить эту ошибку:

 error: no pg_hba.conf entry for host "<My public IP address>", user "<username>", database "<dbname>", SSL off
 

Вот мой app.module.ts

 import { Module } from '@nestjs/common';
import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';

const cfg: TypeOrmModuleOptions = {
  type: 'postgres',
  host: process.env.DB_HOST,
  database: process.env.DB_NAME,
  username: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  port: Number(process.env.DB_PORT),
};

@Module({
  imports: [TypeOrmModule.forRoot(cfg)],
})
export class AppModule {}
 

Каждая DB_* переменная соответствует соответствующим значениям в Heroku Database Credentials

Я думаю, что проблема где-то внутри TypeORM , потому что подключение к той же БД с теми же .env значениями файлов работало в моем другом приложении (написанном на другом языке программирования)

Есть идеи о том, что может быть не так?

Ответ №1:

Чтобы устранить проблему, мне пришлось добавить эти строки в мой объект cfg:

 ssl: true,
extra: {
  ssl: {
    rejectUnauthorized: false,
  },
},
 

С ssl: true опцией нам придется использовать SSL-сертификат, которого у нас пока нет.

Идеальным решением является получение нового SSL-сертификата, но для разработки этого должно быть достаточно.

Ответ №2:

Я получил ту же ошибку и похож на ту же среду разработки, что и вы.

в моем случае я устранил ошибку, связанную с этим подключением Heloku Postgres в Node.js

Я выбрал альтернативный способ исключить конфигурацию ssl, как указано в ссылке.

в консоли вашего пути к проекту введите следующую команду.

конфигурация heroku: установить PGSSLMODE=нет-проверить

приведенная выше команда такая же, как эта. введите описание изображения здесь