안녕하세요! 저도 동일한 문제를 겪다가 게시글을 참조하여 문제해결에 도움을 얻었습니다.
시간이 많이 지났지만 이 문제에 대한 해결 방법을 공유하고자 합니다.
connectDB와 _mongo변수타입을 프로미스로 설정하고, 전역변수 선언파일(global.d.t.ts)을 루트경로에
두라는 글도 있었지만 계속해서 오류가 발생해서 별도의 디렉토리(src/type)를 생성하고
tsconf내부에 typeRoots옵션을 수정하여 문제를 해결했습니다.
몽고 연결 API root/src/util/database.ts
import {MongoClient} from 'mongodb'
// Connect MongoDB
const url = process.env.MONGODB_URL;
// 환경변수 설정하지 않으면 에러 발생
if (!url) {
throw new Error('The MONGODB_URL environment variable is not defined')
}
let connectDB: Promise<MongoClient>;
if (process.env.NODE_ENV === 'development') {
if (!global._mongo) {
global._mongo = new MongoClient(url).connect()
}
connectDB = global._mongo
} else {
connectDB = new MongoClient(url).connect()
}
export {connectDB}
_mongo 전역 타입 지정 root/src/type/global.d.t.ts
export {};
declare global {
var _mongo: Promise<MongoClient> | undefined;
}
컴파일 설정 tsconfig.json
..
"typeRoots": [
"./src/types",
"./node_modules/@types"
]
...
"include": [
".next/types/**/*.ts",
"src/**/*",
"global.d.ts"
],