Node.js拆分Mongoose配置模块报错:mongoose.Schema不是构造函数
问题分析与解决
你在拆分代码时犯了一个语法拼写错误:在mongo.js中导出模块时写了module.export,正确的Node.js模块导出语法应该是module.exports(末尾多一个s)。
这个错误会导致server.js里通过require("./mongo")获取到的不是完整的Mongoose实例,而是一个空对象,自然无法找到Schema构造函数,从而抛出TypeError: mongoose.Schema is not a constructor。
修正后的mongo.js代码
let mongoose = require("mongoose"); mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, }); // 修正导出语法 module.exports = mongoose;
可选优化:添加连接状态监听
为了方便排查数据库连接问题,建议在mongo.js中添加连接状态的监听逻辑:
let mongoose = require("mongoose"); mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, }); // 监听连接成功事件 mongoose.connection.on("connected", () => { console.log("MongoDB 连接成功"); }); // 监听连接错误事件 mongoose.connection.on("error", (err) => { console.error("MongoDB 连接失败:", err); }); module.exports = mongoose;
内容的提问来源于stack exchange,提问作者Gbr
相关产品推荐
相关产品推荐

