我有一个问题,连接到nest.js中的数据库与typeorm和postgres.
我在项目根目录下创建了一个**.env文件**,其中包含以下内容
POSTGRES_HOST=127.0.0.1
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
POSTGRES_DATABASE=db-name
在app.module.ts中,我编写了以下代码:
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { FeedModule } from './feed/feed.module';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.POSTGRES_HOST,
port: parseInt(<string>process.env.POSTGRES_PORT),
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DATABASE,
autoLoadEntities: true,
synchronize: true,
}),
FeedModule,
],
})
export class AppModule {}
但当我运行应用程序的npm启动它抛出这个错误:new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string')
我错过了什么或做错了什么?
4条答案
按热度按时间z8dt9xmd1#
在NestJs中,您应该使用ConfigService来获取typeorm模块中的环境变量,有关更多信息,请阅读docs。
您可以这样使用它:
q35jwt9p2#
正如文档中所解释的,您可以定义一个工厂函数,在其中注入config-service,从而允许您解析相应的值:
l7wslrjt3#
我能够通过使用配置模块修复该问题。
只需执行
npm i @nestjs/config
。然后在TypeOrmModule上面的imports数组中输入ConfigModule.forRoot({ isGlobal: true }),
。这允许您的模块从.env
文件中获取环境变量yqkkidmi4#
我得到这个错误是因为我把.env文件错误地放在了src里面。如果你把它放在src外面,它会修复它