저장을 습관화
에러 기록 - TypeError: Cannot read properties of undefined (reading 'config') 본문
에러 기록 - TypeError: Cannot read properties of undefined (reading 'config')
ctrs 2023. 12. 19. 04:37- 증상
TypeError: Cannot read properties of undefined (reading 'config')
at Object.<anonymous> (C:\생략\project_community\dataSource.ts:5:8)
import dotenv from 'dotenv';
import { DataSource } from 'typeorm';
dotenv.config();
const dataSource = new DataSource({
// 생략
신규 프로젝트 진행 중
dataSource.ts 파일에서 dotenv의 설정 내용을 사용하지 못하는 문제가 발생
- 원인
tsconfig.json에 esModuleInterop 옵션이 설정되어 있지 않아서 발생한 문제
이 프로젝트는 nest.js 프레임워크로 개발 중이었으며
/src 하단에 위치한 파일들은 ConfigModule.forRoot({ isGlobal: true }) 옵션이 있어
dotenv의 내용을 가져오는데 문제가 없었으나
dataSource.ts 파일의 위치는 .env와 동일한 root 디렉토리였기에
ConfigModule의 범위 밖이었음
.env의 내용을 사용하려면 dotenv 패키지의 라이브러리를 정확히 임포트해와야 했으나
esModuleInterop 옵션을 설정하는 것을 빠뜨려서 제대로 임포트가 되지 않았었음
- 해결
tsconfig.json에서 esModuleInterop: true 옵션을 설정
{
"compilerOptions": {
생략
"esModuleInterop": true
}
}
이후 dataSource.ts에서도 .env의 내용을 문제없이 가져오는 것을 확인
tsconfig.json에서 esModuleInterop을 사용하지 않을 것이라면 아래와 같이 사용
import * as dotenv from 'dotenv';
import { DataSource } from 'typeorm';
dotenv.config();
const dataSource = new DataSource({
// 생략
* as dotenv 설정으로 dotenv 패키지의 모든 내용을 dotenv라는 이름으로 모두 사용하거나
사용할 패키지 이름만 정확하게 알아내서 그것만 적던가 해야한다.
하지만 그건 너무 번거롭겠지
- 참조
"TypeError: Cannot read property 'config' of undefined" in dotenv
I'm trying to get access to my .env file via dotenv module, but I'm getting the below error dotenv.config(); ^ TypeError: Cannot read property 'config' of undefined I have dotenv installed in
stackoverflow.com
NestJS - tsconfig.json의 "esModuleInterop" 옵션
메모... tsconfig.json에 아래와 같이 "esModuleInterop": true 옵션을 추가한다. { "compilerOptions": { "esModuleInterop": true } } 타입스크립트 컴파일러는 기본적으로 CommonJS의 exports, require 형태의 코드를 생성한다.
ctrs.tistory.com