본문으로 바로가기

 
 
Yarn Berry 환경에서 작업 중인 토이 프로젝트에서 prisma를 사용하려고 했는데 다음과 같은 에러가 발생하였습니다.
'"@prisma/client"' has no exported member 'PrismaClient'
"@prisma/client"' 모듈에 내보낸 멤버 'PrismaClient'이(가) 없습니다.

 
 

[에러 원인]

저는 PrismaClient를 통해 스키마에 접근해 데이터를 가져오려고 했습니다. 하지만 '"@prisma/client"' has no exported member 'PrismaClient' 에러가 발생하였습니다. 저의 작업 환경은 Yarn Berry 이다 보니 node_modules 폴더가 아닌 PnP로 되어있는 라이브러리 파일을 참조합니다. 그래서 기본 prisma 설정으로는 스키마에 접근을 할 수가 없었습니다. Yarn Berry가 좋은 점이 너무 많아서 이번 기회에 사용을 해봤는데 처음 겪는 에러들이 종종 있네요..
 
 

[해결 방법]

1. @yarnpkg/pnpify 를 통해 prisma generate를 실행하도록 해야 합니다.

@yarnpkg/pnpify로 실행하지 않는다면, pacakge-lock.json 파일과 noe_modules 파일이 생성될 것입니다. Yarn Berry에서는 node_module 폴더 대신 .yarn 폴더를 사용해 의존성을 관리하기 때문에 node_modules는 필요하지 않습니다. 

yarn add @yarnpkg/pnpify

 

2. 다음 코드와 같이 prisma 파일 코드를 바꿔줍니다.

// 파일이름: schema.prisma

generator client {
  provider = "prisma-client-js"
  previewFeactures = ["relationMode"]
  output = "./"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
  relationMode = "prisma"
}


... DB modle

 

3. @yarnpkg/pnpify 라이브러리를 통해 다음 명령어를 통해 prisma generate를 실행합니다.

이 명령어는 생각보다 잘 사용하기 때문에 커스텀 명령어로 등록해서 사용하면 더 편리합니다. 

yarn pnpify prisma generate

 
*package.json에 다음과 같이 prisma 명령어를 추가해서 사용하기 쉽도록 바꿨습니다. 

 

4. 모듈에서 '@prisma' 까지만 import해줍니다.

기존에 @prisma/client로 불러오던 모듈을 @prisma까지 불러오면 에러 없이 실행이 되실 겁니다.

 
 
Yarn Berry가 프로젝트의 의존성 관리 및 개발 환경을 더욱 효과적으로 만들어주지만 주의해야 할 점은 아직 일부 프로젝트나 플러그인이 Yarn v2를 지원하지 않을 수 있으므로 사용 전에 문서를 확인하는 게 좋을 것 같습니다.