`useChat` "An error occurred"
useChat "An error occurred"
useChat를 쓰다가 "An error occurred" 오류를 만날 때가 있어요. 기본적으로 에러가 가려져 있기 때문인데, 해결 방법을 정리해 드릴게요.
출처: 문서
본문
문제 (Issue)
useChat를 사용할 때 "An error occurred" 오류가 발생합니다.
배경 (Background)
streamText의 오류 메시지는 toUIMessageStream을 사용할 때 기본적으로 보안상의 이유(secure-by-default)로 가려집니다. 이는 민감한 정보가 클라이언트로 새어 나가는 것을 방지하기 위함입니다.
해결책 (Solution)
오류 상세 정보를 클라이언트로 전달하거나 오류를 로깅하려면 toUIMessageStream을 호출할 때 onError 함수를 사용하세요.
export function errorHandler(error: unknown) {
if (error == null) {
return 'unknown error';
}
if (typeof error === 'string') {
return error;
}
if (error instanceof Error) {
return error.message;
}
return JSON.stringify(error);
}
const result = streamText({
// ...
});
return createUIMessageStreamResponse({
stream: toUIMessageStream({
stream: result.stream,
onError: errorHandler,
}),
});
createDataStreamResponse를 사용한다면 toDataStreamResponse를 호출할 때 onError 함수를 사용할 수 있습니다.
const response = createDataStreamResponse({
// ...
async execute(dataStream) {
// ...
},
onError: errorHandler,
});
더 알아보기 (Learn more)
- AI SDK 공식 문서에서 다른 트러블슈팅 항목도 확인해 보세요.