작성
·
932
·
수정됨
0
안녕하세요. 환경변수 설정 간 TypeOrmModule.forRoot()를 설정하는 구간에서
강의대로 process.env로 .env에 있는 키들을 받아오려 하니 제목과 같은 에러가 납니다.
구글링을 해보았는데, forRootAsync를 활용하라는 말 등은 있지만 저 에러가 동일하게 구현된 사례는 없었습니다. 혹시 제가 어떤 잘못을 했는지 궁금하여 질문을 남깁니다. 강의 정말 잘 보고 있습니다. 감사합니다.
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env[ENV_DB_HOST],
port: parseInt(process.env[ENV_DB_PORT]),
username: process.env[ENV_DB_USERNAME],
password: process.env[ENV_DB_PASSWORD],
database: process.env[ENV_DB_DATABASE],
synchronize: true,
}),
CommonModule,
ConfigModule.forRoot({
envFilePath:
process.env.NODE_ENV === 'production'
? '.env.production.local'
: '.env.development.local',
isGlobal: true,
}),
AuthModule,
UsersModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
// .env.development.local
DB_TYPE=postgres
DB_HOST=localhost
DB_PORT=5430
DB_USERNAME=123123
DB_PASSWORD=123123
DB_DATABASE=123123
// constants.ts
export const ENV_DB_HOST = 'DB_HOST';
export const ENV_DB_PORT = 'DB_PORT';
export const ENV_DB_USERNAME = 'DB_USERNAME';
export const ENV_DB_PASSWORD = 'DB_PASSWORD';
export const ENV_DB_DATABASE = 'DB_DATABASE';
// 에러 메세지
Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string
답변 2
0
저도 동일한 에러 메시지가 뜨길래 다음과 같이 해결 하였습니다.
참고 하시면 좋겠습니다.
-> TypeOrmModule.forRoot 보다 ConfigModule.forRoot 를 상단에 위치하도록 import 순서를 변경.
imports: [
ConfigModule.forRoot({
envFilePath: '.env',
isGlobal: true,
}),
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env[ENV_DB_HOST_KEY],
port: parseInt(process.env[ENV_DB_PORT_KEY]),
username: process.env[ENV_DB_USERNAME_KEY],
password: process.env[ENV_DB_PASSWORD_KEY],
database: process.env[ENV_DB_DATABASE_KEY],
entities: [PostsModel, UsersModel],
synchronize: true,
}),
PostsModule,
UsersModule,
AuthModule,
CommonModule,
],
0
안녕하세요!
제 생각엔 SASL 문제가 '실제로' 존재해서 뱉는 애러는 아닐 것 같습니다.
무언가 다른 부분에서 실수로 버그를 만들었는데 SASL 에러로 연결되는 것 같습니다.
ENV 관련 문제가 확실하다면 ENV 파일에서 값을 읽어오는데 버그가 있을 수 있습니다. (스펠링 에러등)
한번 더 확인 해보시고 답변 부탁드립니다.
감사합니다!