[Prisma] 컬럼명을 수정했지만 여전히 수정된 이름의 컬럼을 찾을 수 없을 때 ~ Prisma와 Typescript의 캐시 ~

2025. 4. 28. 15:46Programming/Server

반응형

문제 상황

프로젝트에서 새로운 컬럼을 추가하려고 했습니다. youtubeTitle이라는 컬럼을 추가하고 아무 생각없이 코드를 작성하던 중, 문특 yotubeTitle이라는 이름으로 오타가 발생한 것을 확인했습니다. 종종 발생하던 오타라서 별 생각없이 컬럼명을 youtubeTitle으로 수정한 뒤, generatemigrate를 실행했습니다.

npx prisma generate
npx prisma migrate 

하지만 편집기로 돌아오자 여전히 youtubeTitle을 찾을 수 없다는 에러가 발생하고 있었습니다. 어라? 대체 뭘 잘못한거지. 결국은 ChatGPT에게 도움을 요청하고야 맙니다.

개체 리터럴은 알려진 속성만 지정할 수 있으며 '(Without<YoutubeAudioDownloadUpdateInput, YoutubeAudioDownloadUncheckedUpdateInput> & YoutubeAudioDownloadUncheckedUpdateInput) | (Without<...> & YoutubeAudioDownloadUpdateInput)' 형식에 'youtubeTitle'이(가) 없습니다.

원인 분석

이러한 문제가 발생하는 주요 원인은 다음과 같습니다.

  1. Prisma 클라이언트 캐시 문제

    • node_modules/.prisma 디렉토리에 캐시된 이전 버전의 타입 정의가 남아있을 수 있습니다.
    • 이 캐시는 때로는 npx prisma generate 명령어로도 완전히 갱신되지 않을 수 있습니다.
  2. TypeScript 타입 캐시 문제

    • TypeScript 컴파일러가 이전에 생성된 타입 정의를 캐시하고 있을 수 있습니다.
    • .next 폴더나 TypeScript의 캐시 디렉토리에 오래된 타입 정보가 남아있을 수 있습니다.
  3. 의존성 버전 불일치

    • package-lock.json이나 yarn.lock에 캐시된 의존성 버전이 실제 필요한 버전과 다를 수 있습니다.
    • 특히 Prisma 관련 패키지들(@prisma/client, prisma)의 버전이 서로 맞지 않을 수 있습니다.

다만 여기서 prisma의 버전은 변경되지 않았으니 의존성 버전 불일치 문제는 아닐테니, 캐시로 인해 발생하는 문제일 가능성이 높았습니다.

해결 방법

ChatGPT가 제시해준 해결방법은 다음과 같...지는 않고, node_modules 경로를 통으로 날리라고 제시해주더군요. 아무튼 해결은 됐지만, 이런 경우에 매번 node_modules를 날려버린 뒤 npm install을 하는 것도 생각보다 시간이 걸려서... 다른 방법을 제시해달라고 부탁해봤습니다.

1. Prisma 캐시만 삭제하기 (가장 빠른 방법)

rm -rf node_modules/.prisma
rm -rf node_modules/@prisma/client

2. Prisma 캐시와 생성된 클라이언트 재생성

npx prisma generate --force

3. TypeScript 캐시도 함께 삭제

rm -rf .next
rm -rf node_modules/.prisma
rm -rf node_modules/@prisma/client
npx prisma generate

4. Windows의 경우 추가로 다음 디렉토리도 삭제

rm -rf node_modules/@prisma/cli/node_modules/.cache

권장 사항

  1. 가장 일반적인 해결 방법

    rm -rf node_modules/.prisma
    npx prisma generate
  2. 문제가 지속될 경우 확인할 사항

    • Prisma 버전과 @prisma/client 버전이 일치하는지 확인
    • TypeScript 버전이 Prisma와 호환되는지 확인
    • 개발 서버가 오래 실행되어 캐시가 오래된 경우 서버 재시작
  3. 예방 조치

    • package.json에서 Prisma 관련 패키지들의 버전을 정기적으로 확인하고 업데이트
    • 개발 중에는 주기적으로 Prisma 캐시를 초기화하는 습관 가지기

결론

Prisma의 캐시 문제는 개발 과정에서 자주 발생할 수 있는 문제입니다. 물론 깔끔하게 문제가 발생할때마다 node_modules 전체를 삭제해서 해결할수도 있습니다. 하지만 매번 패지기들을 설치하는 것도 시간이 소모되니, 간단하게 Prisma 관련 캐시만 선택적으로 삭제하여 문제를 해결할 수 있습니다.

반응형