lau1944 / bunrest

An express-like API for bun server
MIT License
281 stars 31 forks source link

Body already used #46

Open manazoid opened 3 months ago

manazoid commented 3 months ago

OS: WSL Ubuntu 22.04

Bun version: 1.0.36

Bunrest version: ^1.3.8

My code:

app.get("/api/v1/one/:name/:id", async (req, res) => {
  const name = req.params?.name;
  const id = req.params?.id;
  if (!id) {
    return res.status(StatusCodes.BAD_REQUEST).json({error: `No ${name} ID provided`});
  }

  const itemData = await redisClient.get(`${name}:${id}`);
  if (!itemData) {
    return res.status(StatusCodes.NOT_FOUND).json({error: `${name} not found`});
  }

  const item = JSON.parse(itemData);
  res.json({id, ...item});
}

output for every 30 minutes:

250 |       newReq.body = bodyStr
251 |     }
252 |     req.arrayBuffer;
253 |     newReq.blob = req.blob();
                        ^
error: Body already used
      at /opt/myprojectname/node_modules/bunrest/src/server/server.ts:253:19
LuisMalhadas commented 2 months ago

second here:

router.options('/endpoint', (req, res) => {
    setCORS(res, req.headers?.origin)
    return res.status(200).send('')
})
router.post('/endpoint', async (req, res) => {
    console.log("RECEIVED", req.request.headers.get('content-type'))
    const formdata = await req.request.formData()
}
RECEIVED multipart/form-data; boundary=----WebKitFormBoundaryUfva7xqfDDwlvLFu
api-service-1  | 415 |     console.log("RECEIVED", req.request.headers.get('content-type'))
api-service-1  | 416 |     const formdata = await req.request.formData()
api-service-1  |                                  ^
api-service-1  | error: Body already used
api-service-1  |       at /app/src/Router.ts:419:28
api-service-1  |       at /app/src/Router.ts:413:36
api-service-1  |       at /app/node_modules/bunrest/src/server/server.ts:211:26
api-service-1  | POST - http://localhost:4000/endpoint failed