Bring back catch TokenExpiredError in backend error-handling middleware

This commit is contained in:
Tuan Dang
2023-07-07 13:01:38 +07:00
parent c191eb74fd
commit 53efdac0f0
@@ -1,6 +1,7 @@
import * as Sentry from "@sentry/node"; import * as Sentry from "@sentry/node";
import { ErrorRequestHandler } from "express"; import { ErrorRequestHandler } from "express";
import { InternalServerError } from "../utils/errors"; import { TokenExpiredError } from "jsonwebtoken";
import { InternalServerError, UnauthorizedRequestError } from "../utils/errors";
import { getLogger } from "../utils/logger"; import { getLogger } from "../utils/logger";
import RequestError, { LogLevel } from "../utils/requestError"; import RequestError, { LogLevel } from "../utils/requestError";
import { getNodeEnv } from "../config"; import { getNodeEnv } from "../config";
@@ -19,7 +20,9 @@ export const requestErrorHandler: ErrorRequestHandler = async (
} }
//TODO: Find better way to type check for error. In current setting you need to cast type to get the functions and variables from RequestError //TODO: Find better way to type check for error. In current setting you need to cast type to get the functions and variables from RequestError
if (!(error instanceof RequestError)) { if (error instanceof TokenExpiredError) {
error = UnauthorizedRequestError({ stack: error.stack, message: "Token expired" });
} else if (!(error instanceof RequestError)) {
error = InternalServerError({ error = InternalServerError({
context: { exception: error.message }, context: { exception: error.message },
stack: error.stack, stack: error.stack,