mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
📦 chore: Bump Express.js to v5 (#10671)
* chore: update express to version 5.1.0 in package.json * chore: update express-rate-limit to version 8.2.1 in package.json and package-lock.json * fix: Enhance server startup error handling in experimental and index files * Added error handling for server startup in both experimental.js and index.js to log errors and exit the process if the server fails to start. * Updated comments in openidStrategy.js to clarify the purpose of the CustomOpenIDStrategy class and its relation to Express version changes. * chore: Implement rate limiting for all POST routes excluding /speech, required for express v5 * Added middleware to apply IP and user rate limiters to all POST requests, ensuring that the /speech route remains unaffected. * Enhanced code clarity with comments explaining the new rate limiting logic. * chore: Enable writable req.query for mongoSanitize compatibility in Express 5 * chore: Ensure req.body exists in multiple middleware and route files for Express 5 compatibility
This commit is contained in:
parent
3c54740074
commit
19b78ecd81
11 changed files with 433 additions and 422 deletions
|
|
@ -83,6 +83,20 @@ const startServer = async () => {
|
|||
app.use(express.json({ limit: '3mb' }));
|
||||
app.use(express.urlencoded({ extended: true, limit: '3mb' }));
|
||||
app.use(handleJsonParseError);
|
||||
|
||||
/**
|
||||
* Express 5 Compatibility: Make req.query writable for mongoSanitize
|
||||
* In Express 5, req.query is read-only by default, but express-mongo-sanitize needs to modify it
|
||||
*/
|
||||
app.use((req, _res, next) => {
|
||||
Object.defineProperty(req, 'query', {
|
||||
...Object.getOwnPropertyDescriptor(req, 'query'),
|
||||
value: req.query,
|
||||
writable: true,
|
||||
});
|
||||
next();
|
||||
});
|
||||
|
||||
app.use(mongoSanitize());
|
||||
app.use(cors());
|
||||
app.use(cookieParser());
|
||||
|
|
@ -161,7 +175,12 @@ const startServer = async () => {
|
|||
res.send(updatedIndexHtml);
|
||||
});
|
||||
|
||||
app.listen(port, host, async () => {
|
||||
app.listen(port, host, async (err) => {
|
||||
if (err) {
|
||||
logger.error('Failed to start server:', err);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (host === '0.0.0.0') {
|
||||
logger.info(
|
||||
`Server listening on all interfaces at port ${port}. Use http://localhost:${port} to access it`,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue