Why is my middleware not being hit?
dgreene1 opened this issue · 1 comments
dgreene1 commented
I figured it out, but I'm sharing this for others who might discover this. See below for the answer.
Problem: my error middleware isn't being hit even though I have it set up in index.ts
// #######
// Registering the auto-generated routes from tsoa
const router = new KoaRouter();
RegisterRoutes(router);
app.use(router.routes()).use(router.allowedMethods());
// #######
app.use(bodyParser());
app.use(errorResponder);
app.use(errorLogger);
app.use(insertCorrelationId);
app.use(logRequest);
app.use(gzip());
app.use(cors());
dgreene1 commented
Answer: Turns out that the order matters, especially for middleware that is catching errors.
Solution: If you have a middleware function with a try/catch inside of it, you'll want that to be inserted into your router (via app.use
) before you insert the tsoa routes.
Like this:
app.use(bodyParser());
app.use(errorResponder);
app.use(errorLogger);
app.use(insertCorrelationId);
app.use(logRequest);
app.use(gzip());
app.use(cors());
// #######
// Registering the auto-generated routes from tsoa
const router = new KoaRouter();
RegisterRoutes(router);
app.use(router.routes()).use(router.allowedMethods());
// #######