最近はサーバサイドもTypeScriptにしていて、
routing-controllersがいい感じ。
Error Handlingをカスタムしてるけど、
どのパスにも当てはまらない場合にうまく処理されないので、いろいろ調べてみたときの備忘録。
解決方法
このIssueへの回答が参考になった(*´ω`*)
https://github.com/typestack/routing-controllers/issues/311#issuecomment-365431823
カスタムエラーハンドラを利用するために、defaultErrorHandler: false
を指定しているので、
マッチしない場合のmiddlewareを追加すればよいとのこと
import { Middleware, ExpressMiddlewareInterface } from 'routing-controllers'; import { NextFunction, Request, Response } from 'express'; import { NotFoundError } from '../errors/notfound.error'; @Middleware({ type: 'after' }) export class FinalMiddleware implements ExpressMiddlewareInterface { public use(req: Request, res: Response, next?: NextFunction): void { if(!res.headersSent) { res.status(404).send(); } res.end(); } }
// ... useExpressServer(app, { defaultErrorHandler: false, middlewares: [ FinalMiddleware, CustomErrorHandlerMiddleware, ], ); // ...
以上!! これでError Handlingのカスタマイズが捗る(*´ω`*)