diff --git a/src/app.ts b/src/app.ts index 4c0ffc7e..f7f4f29a 100644 --- a/src/app.ts +++ b/src/app.ts @@ -108,6 +108,7 @@ import { trendingStatusesController, trendingTagsController, } from '@/controllers/api/trends.ts'; +import { errorHandler } from '@/controllers/error.ts'; import { metricsController } from '@/controllers/metrics.ts'; import { indexController } from '@/controllers/site.ts'; import { nodeInfoController, nodeInfoSchemaController } from '@/controllers/well-known/nodeinfo.ts'; @@ -340,12 +341,7 @@ app.get('/', frontendController, indexController); // Fallback app.get('*', publicFiles, staticFiles, frontendController); -app.onError((err, c) => { - if (err.message === 'canceling statement due to statement timeout') { - return c.json({ error: 'The server was unable to respond in a timely manner' }, 500); - } - return c.json({ error: 'Something went wrong' }, 500); -}); +app.onError(errorHandler); export default app; diff --git a/src/controllers/error.ts b/src/controllers/error.ts new file mode 100644 index 00000000..fa5e4d32 --- /dev/null +++ b/src/controllers/error.ts @@ -0,0 +1,11 @@ +import { ErrorHandler } from '@hono/hono'; + +export const errorHandler: ErrorHandler = (err, c) => { + console.error(err); + + if (err.message === 'canceling statement due to statement timeout') { + return c.json({ error: 'The server was unable to respond in a timely manner' }, 500); + } + + return c.json({ error: 'Something went wrong' }, 500); +};