NestJS [TypeOrmModule] 无法连接到数据库。

6
我想连接到远程 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的数据库凭据中的相应值。

我认为问题出在TypeORM中,因为使用相同的.env文件值连接到相同的DB在我的另一个应用程序中(编写在不同的编程语言中)是可以工作的。

有什么想法可能是错了吗?

2个回答

6
为了解决这个问题,我不得不在我的cfg对象中添加这些代码行:
ssl: true,
extra: {
  ssl: {
    rejectUnauthorized: false,
  },
},

使用 ssl: true 选项需要 SSL 证书,但我们目前还没有该证书。

理想解决方案是获取一个新的 SSL 证书,不过在开发阶段这应该已经足够了。


2
我遇到了相同的错误,看起来和你使用的开发环境一样。 在我的情况下,我从这个链接中解决了错误:Heloku Postgres Connecting in Node.js 我选择了该链接中提到的另一种方法,省略了ssl配置。 在项目路径的控制台中,键入以下命令。 heroku config:set PGSSLMODE=no-verify 上述命令与此相同。 enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,