So, something happened a couple of days ago and a project of mine started showing the following error:
TypeError: Busboy is not a constructor
at /app/node_modules/connect-busboy/index.js:21:18
at /app/node_modules/express-fileupload/lib/index.js:9:31
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/app/node_modules/express/lib/router/index.js:323:13)
at /app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/app/node_modules/express/lib/router/index.js:341:12)
at next (/app/node_modules/express/lib/router/index.js:275:10)
at urlencodedParser (/app/node_modules/body-parser/lib/types/urlencoded.js:100:7)
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/app/node_modules/express/lib/router/index.js:323:13)
at /app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/app/node_modules/express/lib/router/index.js:341:12)
at next (/app/node_modules/express/lib/router/index.js:275:10)
at jsonParser (/app/node_modules/body-parser/lib/types/json.js:119:7)
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/app/node_modules/express/lib/router/index.js:323:13)
at /app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/app/node_modules/express/lib/router/index.js:341:12)
at next (/app/node_modules/express/lib/router/index.js:275:10)
at logger (/app/node_modules/morgan/index.js:144:5)
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/app/node_modules/express/lib/router/index.js:323:13)
What I think is strange is that this Busboy isn't being used on my code, only in dependencies from node_modules. Does anyone know if there is any compatibility error with the version of Busboy or any of those listed in the error that could cause such thing?
So, something happened a couple of days ago and a project of mine started showing the following error:
TypeError: Busboy is not a constructor
at /app/node_modules/connect-busboy/index.js:21:18
at /app/node_modules/express-fileupload/lib/index.js:9:31
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/app/node_modules/express/lib/router/index.js:323:13)
at /app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/app/node_modules/express/lib/router/index.js:341:12)
at next (/app/node_modules/express/lib/router/index.js:275:10)
at urlencodedParser (/app/node_modules/body-parser/lib/types/urlencoded.js:100:7)
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/app/node_modules/express/lib/router/index.js:323:13)
at /app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/app/node_modules/express/lib/router/index.js:341:12)
at next (/app/node_modules/express/lib/router/index.js:275:10)
at jsonParser (/app/node_modules/body-parser/lib/types/json.js:119:7)
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/app/node_modules/express/lib/router/index.js:323:13)
at /app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/app/node_modules/express/lib/router/index.js:341:12)
at next (/app/node_modules/express/lib/router/index.js:275:10)
at logger (/app/node_modules/morgan/index.js:144:5)
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/app/node_modules/express/lib/router/index.js:323:13)
What I think is strange is that this Busboy isn't being used on my code, only in dependencies from node_modules. Does anyone know if there is any compatibility error with the version of Busboy or any of those listed in the error that could cause such thing?
Share Improve this question asked Jan 19, 2022 at 11:18 pliniocfpliniocf 3741 gold badge2 silver badges8 bronze badges4 Answers
Reset to default 12Busboy exports a function and not a class. So, one need not use new keyword for creating an instance of Busboy.
const Busboy = require('busboy');
const busboy = Busboy({ headers: req.headers });
Look, node_modules doesn't only contain the packages, which you installed, it also contains dependencies of your installed packages. So a good practice is to use lock files as package-lock.json, which will lock every package's version and every time you run npm install
it installs the exact locked versions (to be more precise - with npm ci
script). So in this case as I see one of your packages has been updated or maybe that "busboy" package has been updated and after you ran install script it brought to you the updated package (or packages) which involves this error.
Most probably this a version issue.
You can see the busboy version using:
npm list busboy
What worked for me was to uninstall busboy:
npm uninstall busboy
And then install an older version like 0.3.1
npm install [email protected]
const Busboy = require('busboy');
const busboy = new Busboy({ headers: request.headers });
let fields = {};
let fileData = {};
let imageUrl;
const Busboy = require('busboy');
const busboy = Busboy({ headers: request.headers }); // Updated syntax: remove
'new'
let fields = {};
let fileData = {};
let imageUrl;
busboy.on("file", function (fieldname, file, info) {
const { filename, encoding, mimetype } = info;
});