오류 형식 지정
비공식 베타 번역
이 페이지는 PageTurner AI로 번역되었습니다(베타). 프로젝트 공식 승인을 받지 않았습니다. 오류를 발견하셨나요? 문제 신고 →
라우터에서 정의한 오류 형식 지정이 클라이언트까지 추론되어 전달됩니다.
사용 예제 하이라이트
커스텀 형식 지정 추가하기
server.tstsimport {initTRPC } from '@trpc/server';import {ZodError } from 'zod';export constt =initTRPC .create ({errorFormatter (opts ) {const {shape ,error } =opts ;return {...shape ,data : {...shape .data ,zodError :error .code === 'BAD_REQUEST' &&error .cause instanceofZodError ?error .cause .flatten (): null,},};},});
server.tstsimport {initTRPC } from '@trpc/server';import {ZodError } from 'zod';export constt =initTRPC .create ({errorFormatter (opts ) {const {shape ,error } =opts ;return {...shape ,data : {...shape .data ,zodError :error .code === 'BAD_REQUEST' &&error .cause instanceofZodError ?error .cause .flatten (): null,},};},});
React에서 사용하기
components/MyComponent.tsxtsximport {useEffect } from 'react';import {trpc } from '../utils/trpc';export functionMyComponent () {constmutation =trpc .addPost .useMutation ();useEffect (() => {mutation .mutate ({title : 'example' });}, []);if (mutation .error ?.data ?.zodError ) {// zodError will be inferredreturn (<pre >Error: {JSON .stringify (mutation .error .data .zodError , null, 2)}</pre >);}return <>[...]</>;}
components/MyComponent.tsxtsximport {useEffect } from 'react';import {trpc } from '../utils/trpc';export functionMyComponent () {constmutation =trpc .addPost .useMutation ();useEffect (() => {mutation .mutate ({title : 'example' });}, []);if (mutation .error ?.data ?.zodError ) {// zodError will be inferredreturn (<pre >Error: {JSON .stringify (mutation .error .data .zodError , null, 2)}</pre >);}return <>[...]</>;}
errorFormatter()로 전달되는 모든 속성
tRPC는 JSON-RPC 2.0을 준수합니다.
tsinterfaceErrorFormatterOpts {error :TRPCError ;type : 'query' | 'mutation' | 'subscription' | 'unknown';path : string | undefined;input : unknown;ctx : unknown;shape : {message : string;code : number;data : unknown };}
tsinterfaceErrorFormatterOpts {error :TRPCError ;type : 'query' | 'mutation' | 'subscription' | 'unknown';path : string | undefined;input : unknown;ctx : unknown;shape : {message : string;code : number;data : unknown };}
DefaultErrorShape:
tstypeDefaultErrorData = {code :TRPC_ERROR_CODE_KEY ;httpStatus : number;/*** Path to the procedure that threw the error*/path ?: string;/*** Stack trace of the error (only in development)*/stack ?: string;};interfaceDefaultErrorShape {message : string;code :TRPC_ERROR_CODE_NUMBER ;data :DefaultErrorData ;}
tstypeDefaultErrorData = {code :TRPC_ERROR_CODE_KEY ;httpStatus : number;/*** Path to the procedure that threw the error*/path ?: string;/*** Stack trace of the error (only in development)*/stack ?: string;};interfaceDefaultErrorShape {message : string;code :TRPC_ERROR_CODE_NUMBER ;data :DefaultErrorData ;}