运行dev客户端报TypeError: connectDB is not a function求助
connectDB is not a function 报错修复 问题根因
报错出在数据库连接配置文件/config/db.js的函数定义语法错误:定义connectDB时错误给变量加了解构花括号,写法为const {connectDB} = async () => {}。
这种写法的逻辑是从等号右侧的返回值里解构出名为connectDB的属性,但等号右侧是一个箭头函数,本身不存在connectDB属性,最终通过module.exports导出的connectDB实际是undefined,在server.js里调用时自然会抛出「不是函数」的类型错误。
修复方法
- 修改
/config/db.js的函数定义,去掉connectDB外层多余的花括号,修正后完整代码如下:
const mongoose = require('mongoose'); const connectDB = async () => { try { const conn = await mongoose.connect(process.env.MONGO_URI,{ useNewUrlParser: true, useUnifiedTopology: true }); console.log(`MongoDB connected: ${conn.connection.host}`.cyan.underline) } catch (error) { console.log(error) process.exit(1) } } module.exports = connectDB
- 配套检查:如果要保留上述代码里
.cyan.underline的彩色日志效果,需要把server.js中被注释的const colors = require('colors')取消注释,同时确保已经安装了colors依赖,否则后续会触发新的「.cyan不是函数」报错。 - 保存文件后重启dev运行脚本,后端服务即可正常启动连接数据库。
日志里前端部分的webpack弃用警告不影响项目正常运行,属于依赖版本兼容提示,可以暂时忽略。
内容的提问来源于stack exchange,提问作者Djamila Azouane
相关产品推荐
相关产品推荐

