routing-controllers icon indicating copy to clipboard operation
routing-controllers copied to clipboard

'Can't set headers after they are sent' error when using Express middleware 'after' request.

Open nathanosdev opened this issue 6 years ago • 9 comments

import {Middleware, ExpressErrorMiddlewareInterface} from "routing-controllers";

@Middleware({ type: "after" })
export class CustomErrorHandler implements ExpressErrorMiddlewareInterface {

    error(error: any, request: any, response: any, next: (err: any) => any) {
        console.log("do something...");
        next();
    }

}

This example code from the documentation causes a 'Can't set headers after they are sent' error. Changing the type to 'before' fixes the issue.

Error: Can't set headers after they are sent.
    at validateHeader (_http_outgoing.js:504:11)
    at ServerResponse.setHeader (_http_outgoing.js:511:3)
    at dnsPrefetchControl (C:\Programming\pbc\server\auth-server\node_modules\dns-prefetch-control\index.js:9:11)
    at call (C:\Programming\pbc\server\auth-server\node_modules\connect\index.js:239:7)
    at next (C:\Programming\pbc\server\auth-server\node_modules\connect\index.js:183:5)
    at Function.handle (C:\Programming\pbc\server\auth-server\node_modules\connect\index.js:186:3)
    at app (C:\Programming\pbc\server\auth-server\node_modules\connect\index.js:51:37)
    at Layer.handle [as handle_request] (C:\Programming\pbc\server\auth-server\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (C:\Programming\pbc\server\auth-server\node_modules\express\lib\router\index.js:317:13)
    at C:\Programming\pbc\server\auth-server\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (C:\Programming\pbc\server\auth-server\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Programming\pbc\server\auth-server\node_modules\express\lib\router\index.js:275:10)
    at compression (C:\Programming\pbc\server\auth-server\node_modules\compression\index.js:220:5)
    at Layer.handle [as handle_request] (C:\Programming\pbc\server\auth-server\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (C:\Programming\pbc\server\auth-server\node_modules\express\lib\router\index.js:317:13)
    at C:\Programming\pbc\server\auth-server\node_modules\express\lib\router\index.js:284:7

nathanosdev avatar Aug 29 '17 17:08 nathanosdev