Comment by pavel_lishin

1 month ago

> Let's not skip over the fact that you can't have multiple middlewares or chain them either.

Surely this can't be right?

https://nextjs.org/docs/messages/nested-middleware > If you have more than one Middleware, you should combine them into a single file and model their execution depending on the incoming request.

By Talos, this can't be happening.

Am I reading this correctly? They are advocating giving up on structuring code in separate files? Is that a scoping problem that NextJS has, which makes it difficult to use multiple files? Seems like a rather ridiculous statement of a framework to make.

  • It's the single file that is used to define the middleware function that runs. You can import whatever you want into it and decide how "you should combine [your middleware] into a single file."

    • As a JavaScript developer, combining/consolidating middlewares manually just defeats the design of middleware. I would rather call it a callback function.

    • I prefer this to having app.use / router.use scattered anywhere throughout the app init (i.e. Express)

I can’t help but feel some of these decisions are made because it’s what is best for Vercel and not what’s best for the framework.

  • I don't see how this particular case makes anything better or worse for Vercel. It's just a poor developer experience to need to come up with your own composeMiddlewares function (or find one of the many that people have posted in various threads).