O video da aula 04 nomeado "Customizando erros" ensina a criar uma entidade de abrigo ao invés de ensinar a criar uma função para manipular os erros, sugiro revisarem os videos da aula 04 - Erros personalizados. Para você que quer dar sequência no curso assim como eu, aqui estão os arquivos que precisam ser configurados antes de começar a assistir essa aula "Aplicando ManipulaErros": 1° Baixe o pacote express-async-errors executando o seguinte comando no terminal:
npm install express-async-errors
2° Configure o app.ts
//app.ts
import "express-async-errors";
import express from "express";
import router from "./routes";
import "reflect-metadata";
import { AppDataSource } from "./config/dataSource";
import { erroMiddleware } from "./middleware/erro";
const app = express();
app.use(express.json());
router(app);
3° Dentro da pasta enum, crie um arquivo chamado EnumHttpStatusCode.ts
//EnumHttpStatusCode.ts
export enum EnumHttpStatusCode {
CREATED = 201,
NO_CONTENT = 204,
OK = 200,
BAD_REQUEST = 400,
NOT_FOUND = 404,
INTERNAL_SERVER_ERROR = 500,
}
4° Renomeie a pasta util para utils, e dentro dela crie um arquivo chamado manipulaErros.ts
//manipulaErros.ts
export class ManipulaErros extends Error {
readonly statusCode: number;
constructor(message: string, statusCode: number) {
super(message);
this.statusCode = statusCode;
}
}
5° Dentro da pasta middleware, crie um arquivo chamado erro.ts
//erro.ts
import { NextFunction, Request, Response } from "express";
import { ManipulaErros } from "../utils/manipulaErros";
import { EnumHttpStatusCode } from "../enum/EnumHttpStatusCode";
export const erroMiddleware = (
erro: ManipulaErros,
req: Request,
res: Response,
next: NextFunction
) => {
const statusCode =
erro.statusCode ?? EnumHttpStatusCode.INTERNAL_SERVER_ERROR;
const mensagem = erro.statusCode ? erro.message : "Erro interno do servidor";
res.status(statusCode).json({ mensagem });
return next();
};
Agora pode prosseguir com a aula! ;)