Files
Alessandro Grosselle 456d8e7b8c fix: ensure req.query is writable (#81573)
### What?
- Upgrade development dependency **Express** to the latest version
(5.1.0).
- Replace direct assignment of `apiReq.query` with
`Object.defineProperty` to ensure the property is writable, enumerable,
and configurable.

### Why?
- To use the most up-to-date and supported version of Express instead of
a legacy one.
- To fix
[expressjs/express#6633](https://github.com/expressjs/express/issues/6633),
where Express 5.x defines `req.query` as a read-only getter, preventing
Next.js from overriding it directly.

### How?
- Update the Express version in `package.json` and run `pnpm install` to
apply the change.
- Replace:

```js
apiReq.query = query;
```
With 
```js
Object.defineProperty(apiReq, 'query', {
  value: { ...query },
  writable: true,
  enumerable: true,
  configurable: true,
});
```

---------

Co-authored-by: Alessandro Grosselle <alessandro.grosselle@adevinta.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Beltran <bjohansebas@gmail.com>
Co-authored-by: Tim Neutkens <tim@timneutkens.nl>
2025-10-28 12:15:05 +01:00

36 lines
754 B
JavaScript

const next = require('next')
const express = require('express')
const getPort = require('get-port')
async function main() {
const dev = process.env.NEXT_TEST_MODE === 'dev'
process.env.NODE_ENV = dev ? 'development' : 'production'
const port = await getPort()
const app = next({ dev })
const handleNextRequest = app.getRequestHandler()
await app.prepare()
const server = express()
server.all('/:path', (req, res) => {
handleNextRequest(req, res)
})
server.listen(port, (err) => {
if (err) {
throw err
}
console.log(`- Local: http://localhost:${port}`)
console.log(`- Next mode: ${dev ? 'development' : process.env.NODE_ENV}`)
})
}
main().catch((err) => {
console.error(err)
process.exit(1)
})