강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

somi5404님의 프로필 이미지
somi5404

작성한 질문수

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

환경변수 적용하기 - 1

process.env port key 에러

작성

·

36

0

코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다!

[코드팩토리 디스코드]
https://bit.ly/3HzRzUM

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

image.pngimage.pngimage.png

 

typeorm 강의 듣다가 config 섹션 먼저 듣고 있습니다. parseInt를 붙였는데도 string | undefined에러가 떴는데 뭐가 문제인지 모르겠어요..

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

somi5404님께서 TypeORM 관련하여 process.env 변수에서 parseInt로 변환할 때 발생하는 'string | undefined'는 'string' 타입에 할당할 수 없습니다 에러를 경험하고 계시군요. 이 문제는 환경 변수 process.env[ENV_DB_PORT_KEY]undefined일 수 있기 때문에 발생합니다. 오류를 해결하기 위한 몇 가지 방법은 다음과 같습니다:

  1. 디폴트 값을 사용: 환경 변수가 undefined일 때를 대비하여 기본값을 설정할 수 있습니다. 예를 들어:

    const dbPort = parseInt(process.env[ENV_DB_PORT_KEY] ?? '5432', 10);
    
  2. 필수 환경 변수 체크: 애플리케이션 시작 시 필요한 환경 변수가 모두 존재하는지 검증하는 로직을 추가할 수 있습니다. 만일 undefined일 경우 명시적으로 에러를 던지는 방식입니다.

  3. TypeScript Non-null Assertion 사용: 환경 변수가 반드시 존재하는 경우에만 사용 가능한 방법으로, ! 연산자를 사용하여 컴파일러에게 null 또는 undefined가 아님을 보장할 수 있습니다. 그러나 이는 런타임 에러를 방지하지는 않기 때문에, 존재 유무를 확실히 알고 있을 때에만 사용하는 것이 좋습니다.

    const dbPort = parseInt(process.env[ENV_DB_PORT_KEY]!, 10);
    

위 방법 중 상황에 맞는 방법으로 문제를 해결해 보시길 권장드립니다.

추가로 Spring Boot Reference Documentation에서는 Spring Boot의 환경설정 관련 정보도 제공하고 있으니 참고하셔도 좋습니다.
궁금하신 점이 있으시면 언제든지 질문해주세요!

somi5404님의 프로필 이미지
somi5404

작성한 질문수

질문하기