Skip to content

[Bug?]: Middleware returning Response is not working properly #1523

@Playify

Description

@Playify

Duplicates

  • I have searched the existing issues

Latest version

  • I have tested the latest version

Current behavior 😯

when returning a Response object from the middleware, the headers and body get mixed up, if both the middleware returns a Promise and the file router returns a webpage. (Or if multiple middleware return Responses)

Expected behavior 🤔

Only one of the Responses should be used, instead of mixing mutliple responses together. The middleware response should have priority, and only if no Response is returned, the webpage should try to render.

Steps to reproduce 🕹

Steps:

  1. create a routes/[...404].js error page
  2. create a middleware, that returns a new Response("some content"), when accessing a specific page
  3. check in browser, what gets returned. Sometimes it returns "some content", other times "<!DOCTYPE ht" (the start from the 404 error page, with same length as the "some content" string from the middleware)

Context 🔦

I was trying to create a file server, that returns files from the middleware, and directory listings via solid routes.

The problem lies in packages/start/src/middleware/index.tsx, as sendWebResponse is not awaited in any of the wrap* functions, and createMiddleware also doesn't await properly, if an array is passed in.

As a workaround, i currently do

await sendWebResponse(fetchEvent.nativeEvent,response);
return;

instead of

return response;

in my project.

Your environment 🌎

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions