BigInt 타입을 사용했을 때 타입 에러가 발생하는 원인을 학습했습니다.BigInt로 지정했습니다.model User {
id BigInt @id @default(autoincrement())
...
}
user 테이블에 더미 데이터를 넣고 findMany()로 데이터를 조회했는데 아래와 같은 에러를 만났습니다.return this.prisma.user.findMany();
TypeError: Do not know how to serialize a BigInt
BigInt를 사용할 때 발생하는 이 에러는 JavaScript의 JSON.stringify()가 BigInt 타입을 어떻게 처리해야 할지 모르기 때문에 발생합니다.100n과 같은 BigInt 객체로 변환됩니다.BigInt 데이터 타입이 존재하지 않아 직렬화(Serialization) 과정에서 에러가 터지는 것입니다.JSON.stringify({ id: 1n });
// ❌ TypeError: Do not know how to serialize a BigInt
<aside>
JavaScript Number vs BigInt
JavaScript는 전통적으로 숫자 타입이 Number 하나뿐이었다.
그래서 이 문제를 해결하기 위해 ES2020에서 BigInt 타입이 추가되었다.
const id = 9007199254740993n;
typeof id // "bigint"
n을 붙여서 표현한다.
</aside>