"클라이언트 컴포넌트에서 일반 객체만 전달할 수 있습니다" 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에서 시리얼라이즈 가능한 데이터만 반환하도록 해야 해요. 다음과 같이 접근 방식을 바꿔볼 수 있어요:
streamText의 전체 결과 객체를 반환하는 대신, 필요한 시리얼라이즈 가능한 데이터만 추출해요.createStreamableValue함수를 사용해 클라이언트로 안전하게 전달할 수 있는 스트리밍 값을 만들어요.
이 솔루션을 구현하는 예시는 여기 있어요: Streaming Text Generation.
이렇게 하면 시리얼라이즈 가능한 데이터(텍스트)만 클라이언트로 전달되므로 "only plain objects" 오류를 피할 수 있어요.
더 알아보기 (Learn more)
- Azure OpenAI 스트리밍이 느릴 때
- 클라이언트 컴포넌트에서의 Server Actions
- useChat/useCompletion 스트림 출력에 텍스트 대신 0:...이 나올 때
- Streamable UI 오류
- Tool Invocation 결과 누락 오류
- 배포했는데 스트리밍이 안 될 때
- 프록시를 거치면 스트리밍이 안 될 때
- Vercel에 배포할 때 타임아웃 발생
- 닫히지 않는 스트림
- useChat 스트림 파싱 실패
- Server Action Plain Objects 오류
- useChat 응답 없음
- useChat에서 커스텀 헤더, body, credentials가 동작하지 않을 때
- Zod와 AI SDK 5의 TypeScript 성능 문제
- useChat "An error occurred"
- useChat에서 어시스턴트 메시지 반복
- 스트림이 중단될 때 onEnd가 호출되지 않음
- 구조화된 출력으로 툴 호출
- 중단과 재개 가능한 스트림
- streamText가 조용히 실패할 때
- 스트리밍 상태는 표시되는데 텍스트가 안 나올 때
- useChat의 오래된 body 값
- onToolCall의 타입 오류
- 지원되지 않는 모델 버전 오류
- OpenAI에서 객체 생성 실패
- Missing Tool Results 오류
- 모델이 "LanguageModelV1" 타입에 할당 불가
- TypeScript 오류 "Cannot find namespace 'JSX'"
- React 오류 "Maximum update depth exceeded"
- Jest: 모듈 '@ai-sdk/rsc'을 찾을 수 없음
- 이미지 여러 개 처리 시 높은 메모리 사용