방명록
- [Prisma] Prisma + Next.js 같이 사용할때 warn(prisma-client) 오류 해결 [9/29 study]2024년 09월 29일 16시 39분 22초에 업로드 된 글입니다.작성자: 동혁이
Prisma + Next.js 같이 사용할때 warn(prisma-client) 오류 해결
현상
prisma랑 next.js를 같이 사용하는 프로젝트일 경우 dev 모드를 사용하면 아래와 같은 warning이 나온다.
warn(prisma-client) There are already 10 instances of Prisma Client actively running.
next dev 모드는 node.js 캐쉬를 없애기 때문에 매번 PrismaClient를 새로 생성해서 성능 문제를 일으키므로 매번 생성하지 못하도록 코드를 수정해주어야 합니다.
해결
vscode에 주석으로 공부한 내용 적어두어서 복붙했습니다!
/src/db/index.ts import { PrismaClient } from "@prisma/client"; // prismaClientSingleton이라는 함수를 통해 새로운 PrismaClient 인스턴스를 생성하고 반환할 수 있도록 함 const prismaClientSingleton = () => { return new PrismaClient(); }; // 이 prismaGlobal 코드 같은 경우에는 객체를 생성하는데 객체 같은 경우 전역 범위에서 Client를 저장하기 위한 용도로 사용이됩니다. // 이 코드는 개발 환경에서만 사용할 거기 때문에 globalThis를 사용해 전역객체에 접글을 합니다. declare const globalThis: { prismaGlobal: ReturnType<typeof prismaClientSingleton>; } & typeof global; // prisma 해당 변수는 PrismaClient 객체 globalThis의 prismaGlobal의 prisma 객체를 참조하거나 존재하지 않는 경우에는 prismaClientSingleton함수를 호출해 새로운 PrismaClient 인스턴스를 생성합니다 const prisma = globalThis.prismaGlobal ?? prismaClientSingleton(); export default prisma; // 따라서 이렇게 개발 환경에서만 PrismaClient 인스턴스를 전역객체에 할당해서 재사용합니다. if (process.env.NODE_ENV !== "production") globalThis.prismaGlobal = prisma;
적용
이전코드
적용코드
PrismaClient를 계속 새로 생성하는 성능 저하 이슈를 해결했다!
참고
Best practice for instantiating Prisma Client with Next.js | Prisma Documentation
Best practice for instantiating Prisma Client with Next.js
www.prisma.io
다음글이 없습니다.이전글이 없습니다.댓글