일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 격파르타후기
- java map 출력
- 비전공자sqld
- sqld자격증합격
- java map 저장
- java list 출력
- 격파르타장점
- 컴파일
- 작은수제거하기
- java알고리즘
- java참조자료형
- 항해99후기
- 프로그래머스제일작은수
- 코딩부트캠프후기
- java list 저장
- java알고리즘문제풀이
- java최솟값구하기
- 인터프린터언어
- javaJRE
- java 자료구조 활용
- java기본자료형
- java set 저장
- 항해15기
- 격파르타합격후기
- java set 출력
- java map
- 노베이스부트캠프
- 프로그래머스
- javaJVM
- 격파르타비전공자
- Today
- Total
코딩과 결혼합니다
[오류] MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". | @nestjs/config 본문
[오류] MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". | @nestjs/config
코딩러버 2024. 8. 13. 19:03문제
'process.env.MONGO_URL' 값이 'undefinde' => 데이터 베이스 URI를 제대로 인식하지 못하고 있어서 발생
로그를 찍어봤을 때도 마찬가지.
해결
1. env 파일 위치
'src' 디렉터리가 아닌 루트 디렉터리에 위치해 있어야 한다.✔
2. ConfigModule 설정 확인
환경 변수를 프로젝트에서 사용할 수 있도록 로드하는 역할을 한다.
//app.module.ts
...
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [
ConfigModule.forRoot(),
MongooseModule.forRoot(process.env.MONGO_URL)
],
...
1) 설정이 되어있지 않았다.
2) error TS2307: Cannot find module '@nestjs/config' or its corresponding type declarations.
npm install @nestjs/config
다시 시작했을 때에 url이 잘 연결됨을 확인하였다.
분명히 이 프로젝트에서는 잘 돌아가던 코드가 다른 프로젝트에서는 또 돌아가지 않는 문제가 발생하였다.
그리고 팀장님께서 도움을 주셨다...
@Module({
imports: [
CatsModule,
UsersModule,
MongooseModule.forRoot(process.env.MONGODB_URI),
ConfigModule.forRoot(),
],
@Module({
imports: [
CatsModule,
UsersModule,
ConfigModule.forRoot(),
MongooseModule.forRoot(process.env.MONGODB_URI),
],
위에는 내가 쓴 코드 그리고 아래는 수정된 코드이다.
이 위치의 차이로 환경변수 값을 사용하지 못하는 것이었다.
모듈 설정에서는 'ConfigModule'이 먼저 로드되어야
'process.env'에 설정된 값들을 사용할 수 있다.
따라서 'MongooseModule.forRoot(process.env.MONGODB_URI)'를 호출하기 전에
ConfigModule이 환경 변수를 로드하도록 해야 하는 것이다.
✍@nestjs/config ?
nestJS 애플리케이션에서 환경 설정을 관리하는 데 도움을 주는 패키지 이다. 이 모듈을 사용하면 애플리케이션의 설정을 쉽게 로드하고 관리할 수 있으며, 코드 설정을 깔끔하게 분리할 수 있다.
- 환경 변수 로딩 : '.env' 파일에 정의된 환경 변수를 자동으로 로드하고 애플리케이션 내에서 사용할 수 있게 한다.
- 구성 파일 관리 : 여러 환경(개발, 테스트, 프로덕션 등)에 따라 다른 설정 파일을 관리할 수 있다.
- 구성값 검증 : 설정 값의 유효성을 검사하고, 잘못된 설정이 있을 경우 오류를 발생시킬 수 있다.
- 설정 추상화 : 설정을 서비스나 모듈에서 쉽게 주입받아 사용할 수 있게 해준다.
'2세 > Nest.js' 카테고리의 다른 글
몽고DB 스키마 인덱스 삭제하기 (0) | 2024.08.14 |
---|---|
비동기 | async와 await (0) | 2024.08.13 |
[오류]Cannot find module '@nestjs/common' or its corresponding type declarations. (0) | 2024.08.12 |
04. [ 미들웨어 ] (0) | 2024.08.04 |
03. [ Node.js 기초 문법 ] (0) | 2024.08.04 |