개발환경과 배포환경시 다른 의존성을 주입하는 예제
질문보다는 코드 리뷰에 가까운데
강의 내용중에 나온 테스트 코드와 실제 배포시 다르게 적용할 경우 예제를 작성해 보았습니다.
이해한 내용이 맞는지 또는 보안이나 수정할 만한 내용이 있는지 알려주시면 감사합니다.
//app.service.ts
import { Injectable } from '@nestjs/common';
export interface IAppService {
getSecret(): string;
}
@Injectable()
export class AppService implements IAppService {
getSecret(): string {
return '실제 배포 환경';
}
}
@Injectable()
export class Test_AppService implements IAppService {
getSecret(): string {
return '개발 테스트 환경';
}
}
//app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService, Test_AppService } from './app.service';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [ConfigModule.forRoot({ isGlobal: true })],
controllers: [AppController],
providers: [
{
provide: 'AppService',
useClass:
process.env.NODE_ENV === 'production' ? AppService : Test_AppService,
},
],
})
export class AppModule {}
//app.controller.ts
import { Controller, Get, Inject } from '@nestjs/common';
import { IAppService } from './app.service';
@Controller()
export class AppController {
constructor(@Inject('AppService') private readonly appService: IAppService) {}
@Get()
getHello(): string {
return this.appService.getSecret();
}
}
답변 1
1
그렇게 하시면 됩니다.
하나 보완할 만한 것은 process.env.NODE_ENV도 configService를 inject하는 식으로 수정해서 configService.get('NODE_ENV')로 바꾸면 좋을 것 같습니다.
강의자료는 어디서 다운받나요?
0
114
4
질문 있습니다.
0
298
3
(강의 5:42 질문) providers를 통한 여러 개의 인스턴스 생성 & exports 통한 싱글톤 생성
0
154
2
코드 편집기 확장 프로그램
0
209
2
(질문)비밀 저장소에 접근하기 위한 인증 정보는 로컬 .env에 저장하는지?
0
143
2
(질문)외부 저장소를 통한 환경변수 불러오기 비동기 질문
0
168
3
로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.
0
152
2
로그인방법이 고민됩니다.
0
190
2
yarn seed 명령어 실행 시 데이터 삽입 안됨
0
297
4
yarn run db:create 시에 발생하는 데코레이터 오류
0
242
2
npm run db:create 시에 발생하는 decorating 오류
0
232
2
RxJS 디버깅 질문 있습니다.
0
189
3
CacheManager에 대해 질문 있습니다.
0
174
2
로깅은 어떻게 하는게 효율적일까요?
0
224
1
CORS 질문 있습니다.
0
418
2
쿠키 옵션에 대해서 질문 있습니다.
0
184
2
로그아웃 요청이 403 forbidden 에러가 나는데 왜그런걸까요??
0
449
1
401 unauthorized문제
0
288
1
가드의 장점에 대해서 질문이 있습니다.
0
225
1
로그 관리에 대해 질문 있습니다.
0
252
2
CORS 에러 질문 있습니다.
0
319
2
배포 환경 DB 연결 질문 있습니다.
0
411
2
socket io 미 연결 문제 (nest & flutter)
1
1154
3
no elements in sequence 에러 관해서 질문이 있습니다.
0
454
1





