"클라이언트 컴포넌트에서 일반 객체만 전달할 수 있습니다" Server Action 오류

"클라이언트 컴포넌트에서 일반 객체만 전달할 수 있습니다" Server Action 오류

Server Actions에서 클라이언트 컴포넌트로 시리얼라이즈할 수 없는 객체를 전달할 때 나는 오류를 다루는 문서예요.

출처: 문서

본문

문제

Server Actions와 함께 streamText를 사용하고 있는데, "only plain objects and a few built ins can be passed from client components" 오류가 발생해요.

배경

이 오류는 Server Action에서 클라이언트 컴포넌트로 시리얼라이즈할 수 없는 객체를 반환하려 할 때 발생해요. streamText 함수는 메서드나 복잡한 구조를 가진 객체를 반환하는 경우가 많은데, 이런 객체는 직접 시리얼라이즈해서 클라이언트로 전달할 수 없어요.

해결 방법

이 문제를 해결하려면 Server Action에서 시리얼라이즈 가능한 데이터만 반환하도록 해야 해요. 다음과 같이 접근 방식을 바꿔볼 수 있어요:

  1. streamText의 전체 결과 객체를 반환하는 대신, 필요한 시리얼라이즈 가능한 데이터만 추출해요.
  2. createStreamableValue 함수를 사용해 클라이언트로 안전하게 전달할 수 있는 스트리밍 값을 만들어요.

이 솔루션을 구현하는 예시는 여기 있어요: Streaming Text Generation.

이렇게 하면 시리얼라이즈 가능한 데이터(텍스트)만 클라이언트로 전달되므로 "only plain objects" 오류를 피할 수 있어요.

더 알아보기 (Learn more)

전체 사이트맵