[Nest.js 정리] env활용 (Config, process)
[Nest.js 정리] env활용 (Config, process)
목차
Config를 활용한 환경변수 활용
process 객체를 활용한 환경변수 활용
프로젝트를 할 때 보안적 측면을 고려해서 env
파일을 사용한다.
API
키, DB
정보 등을 환경변수로 활용할 필요가 있다.
Config
이를 활용하기 위해선 @nestjs/config
를 설치해야한다.
이후 이를 app.module
에 import하고 이를 주입하여 사용하면된다.
app.module.ts
1
2
3
4
5
6
7
@Module({
imports: [
ConfigModule.forRoot({
envFilePath: '.env',
isGlobal: true,
}),
// ...
이런식으로 env
파일의 주소를 설정할 것인지, 모든 모듈이 이를 활용할 수 있는지 설정한다.
service.ts
정말 어렵지 않다. constructor로 주입을하고 사용하면된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
export class PostsService {
constructor(
@InjectRepository(PostsModel)
private readonly postsRepository: Repository<PostsModel>,
// PostsModel을 다루는 레포지토리를 주입하겠다.
private readonly commonService: CommonService,
private readonly configService: ConfigService,
) {}
// ...
// ...
// configService의 get으로 환경변수를 가져올 수 있다.
const nextUrl =
lastItem &&
new URL(
`${this.configService.get(ENV_PROTOCOL_KEY)}://${this.configService.get(ENV_HOST_KEY)}/posts`,
);
// ...
process 활용
DB
를 연결할 때, password, username을 가릴 필요가 있다.
근데, CondigModule
을 import하는 app.module.ts
에서는 이를 활용할 수 없기에 TypeOrmModule
을 통한 DB
연결에 process
를 활용한다.
1
2
3
4
5
6
7
8
9
10
11
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],
// 개발환경에선 싱크 맞추는게 편리. 그 외는 false
synchronize: true,
}),
This post is licensed under CC BY 4.0 by the author.