Formatage des erreurs
Traduction Bêta Non Officielle
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Le formatage des erreurs dans votre router sera propagé jusqu'à votre client.
Exemple d'utilisation mis en avant
Ajout d'un formatage personnalisé
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,},};},});
Utilisation avec 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 <>[...]</>;}
Toutes les propriétés envoyées à errorFormatter()
tRPC est conforme à 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 ;}