diff --git a/lib/response.js b/lib/response.js index 7a2f0ecce56..a98806fbaee 100644 --- a/lib/response.js +++ b/lib/response.js @@ -62,6 +62,10 @@ module.exports = res */ res.status = function status(code) { + // Prevent BigInt serialization error + if (typeof code !== 'number') { + throw new TypeError(`Invalid status code: ${code} (${typeof code}). Status code must be a number.`); + } // Check if the status code is not an integer if (!Number.isInteger(code)) { throw new TypeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be an integer.`); diff --git a/test/res.status.js b/test/res.status.js index 59c8a57e702..181f2df976a 100644 --- a/test/res.status.js +++ b/test/res.status.js @@ -200,6 +200,18 @@ describe('res', function () { .get('/') .expect(500, /Invalid status code/, done); }); + + it('should raise error for BigInt status code', function (done) { + var app = express() + + app.use(function (req, res) { + res.status(200n).end() + }) + + request(app) + .get('/') + .expect(500, /Invalid status code/, done) + }) }); }); });