Skip to content

Error Handling Middleware #311

Description

@danieladams456

Is this a feature request?

Yes

http-proxy events forces you to handle writing the response within the handler onError(err, req, res) instead of allowing you to pass it to an Express error handling middleware.

Motivation: I have a standard Express middleware that handles error response formatting for the rest of the app (authentication errors, etc). My app is simple and that logic is just a few lines of code, but it would be nice especially for more complex apps not to have to duplicate that logic. I am also using NewRelic APM and it can more easily deduce errors when they flow through an Express error handling middleware. Again, nothing a few lines of manual code couldn't fix, but the ability to delegate to an error handling middleware would be ideal.

I'm not sure if there is a clean way of handling this without monkey-patching or something since http-proxy wasn't designed to be tied to Express.

Steps to reproduce

  1. There is no next argument for a next(err) call in the http-proxy onError event function signature.

Expected behavior

Feature request to investigate whether there is a clean solution to extend that function call signature with another argument that would let the remainder of the request flow through Express' standard error handling middleware.

Actual behavior

http-proxy-middleware must fully write the response, including HTTP headers, etc.

Setup

  • http-proxy-middleware: 0.19.0
  • http-proxy-middleware configuration: see below
  • server: express 4.16.4
const app = express();
app.use(healthMiddleware);
app.use(authMiddleware);
app.use(proxy({target: PROXY_TARGET, onError}));
app.use(errorMiddleware);

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions