Fix crash with express 5

express.json does not enforce json. this means it will pass it through
but let req.body be undefined. this causes all our asserts to crash
This commit is contained in:
Girish Ramakrishnan
2025-06-06 16:30:43 +02:00
parent 74a8779c49
commit 05fc8ed5db
3 changed files with 20 additions and 1 deletions
+1
View File
@@ -3,6 +3,7 @@
exports = module.exports = {
cookieParser: require('cookie-parser'),
cors: require('./cors.js'),
json: require('./json.js'),
lastMile: require('connect-lastmile'),
multipart: require('./multipart.js'),
timeout: require('connect-timeout')
+18
View File
@@ -0,0 +1,18 @@
'use strict';
const express = require('express');
function _mime(req) {
const str = req.headers['content-type'] || '';
return str.split(';')[0];
}
exports = module.exports = function (options) {
const json = express.json(options);
return function (req, res, next) {
// enforce json body type. without this the json middleware will skip parsing and req.body might be undefined
if (_mime(req) !== 'application/json') return res.status(400).send('incorrect mime type. expecting application/json');
json(req, res, next);
};
};
+1 -1
View File
@@ -41,7 +41,7 @@ async function initializeExpressSync() {
const REQUEST_TIMEOUT = 60000; // timeout for all requests (see also setTimeout on the httpServer)
const json = express.json({ strict: true, limit: QUERY_LIMIT }); // application/json
const json = middleware.json({ strict: true, limit: QUERY_LIMIT }); // forces json content-type
app.set('json spaces', 2); // pretty json
app.enable('trust proxy'); // trust the X-Forwarded-* headers