pes04
pes042d ago

Question about onError and modifying error messages in tRPC

I’m trying to follow the tRPC docs on error handling and want to log detailed errors on the server by throwing specific exceptions but send a generic message to the client (see https://trpc.io/docs/server/error-handling#handling-errors). I thought this would work:
onError: (opts) => {
logError(`Error in TRPC in path=${opts.path}`, opts.error);

opts.error = new TRPCError({
code: 'INTERNAL_SERVER_ERROR',
message: 'An error happened. Please try again',
});
}
onError: (opts) => {
logError(`Error in TRPC in path=${opts.path}`, opts.error);

opts.error = new TRPCError({
code: 'INTERNAL_SERVER_ERROR',
message: 'An error happened. Please try again',
});
}
But it doesn’t seem to have any effect — the original error is still sent to the client. According to the docs, I assumed mutating opts.error would override the one sent to the client. Am I misunderstanding something, or is there another way to do this? Thanks in advance.
Error Handling | tRPC
Whenever an error occurs in a procedure, tRPC responds to the client with an object that includes an "error" property. This property contains all the information that you need to handle the error in the client.
Solution:
You want the errorFormatter
Jump to solution
3 Replies
Solution
Nick
Nickthis hour
You want the errorFormatter
pes04
pes04OP21h ago
Ah yes, I think I achieved what I needed with the formatter! Thanks! Maybe the docs should be updated for the page mentioned above, because "Here you can handle or change errors." is a bit misleading for me
Nick
Nick18h ago
PRs welcome! I’m surprised onError said “change” that’s definitely wrong

Did you find this page helpful?