Express.js中TypeError: require(...) is not a function报错求助
解决
TypeError: require(...) is not a function(pg-promise 相关) 这个错误是因为你使用的 pg-promise 版本和代码的导入方式不兼容导致的,核心是v10+版本的导出规则发生了变化。
问题根源
在 pg-promise v9及更早版本中,模块默认导出一个可直接调用的函数,所以你原来的代码const pgp = require("pg-promise")(options)能正常运行。但从v10版本开始,模块采用了更规范的CommonJS导出方式:require("pg-promise")返回的是一个包含default属性的模块对象,而非直接的可调用函数,直接调用自然会抛出TypeError。
解决方案
你有两种选择来修复这个问题:
方案1:适配pg-promise v10+版本
修改导入代码,明确获取default导出的函数:
// 方式一:直接获取default并调用 const pgp = require("pg-promise").default(options); // 方式二:先导入模块,再调用default函数 const pgPromise = require("pg-promise"); const pgp = pgPromise.default(options);
方案2:降级到pg-promise v9版本
如果你想保留现有代码结构不变,可以将pg-promise降级到v9.x系列,运行以下命令:
npm install pg-promise@9.x --save
验证步骤
- 打开项目的
package.json文件,查看pg-promise的版本号,确认是v10+还是旧版本 - 根据版本选择对应的方案修改代码或执行降级命令
- 重新运行
npm start,问题应该就能解决了
内容的提问来源于stack exchange,提问作者Dicky Perdian
相关产品推荐
相关产品推荐

