NodeJS - TypeError: Busboy is not a constructor
NodeJS - TypeError: Busboy is not a constructor
所以,几天前发生了一些事情,我的一个项目开始显示以下错误:
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)
我认为奇怪的是,这个 Busboy 没有在我的代码中使用,仅在 node_modules 的依赖项中使用。有谁知道 Busboy 的版本是否存在任何兼容性错误或错误中列出的任何可能导致此类问题的错误?
看,node_modules 不仅包含您安装的软件包,还包含您安装的软件包的依赖项。所以一个好的做法是使用锁定文件作为 package-lock.json,这将锁定每个包的版本,并且每次你 运行 npm install
它安装精确锁定的版本(更准确地说 -使用 npm ci
脚本)。所以在这种情况下,我看到你的一个包已经更新或者可能那个“busboy”包已经更新并且在你 运行 安装脚本之后它给你带来了涉及这个错误的更新包(或多个包)。
所以,几天前发生了一些事情,我的一个项目开始显示以下错误:
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)
我认为奇怪的是,这个 Busboy 没有在我的代码中使用,仅在 node_modules 的依赖项中使用。有谁知道 Busboy 的版本是否存在任何兼容性错误或错误中列出的任何可能导致此类问题的错误?
看,node_modules 不仅包含您安装的软件包,还包含您安装的软件包的依赖项。所以一个好的做法是使用锁定文件作为 package-lock.json,这将锁定每个包的版本,并且每次你 运行 npm install
它安装精确锁定的版本(更准确地说 -使用 npm ci
脚本)。所以在这种情况下,我看到你的一个包已经更新或者可能那个“busboy”包已经更新并且在你 运行 安装脚本之后它给你带来了涉及这个错误的更新包(或多个包)。