如何解决ReferenceError: User is not defined错误?附相关代码
解决ReferenceError: User is not defined错误
导致这个错误的原因有几处代码问题,逐一修正即可:
1. 模型导出语法错误
User模型文件中使用了错误的导出语法module.export,正确写法是module.exports(末尾多一个s),缺失s会导致模型无法被正确导入。
2. 导入变量名与使用不匹配
路由文件中导入模型时命名为user,但后续代码却使用未定义的User变量,需要统一变量名。
3. 模型实例化与保存错误
- 创建模型实例时必须使用
new关键字; - 不能直接覆盖导入的模型变量;
- 保存操作需要调用实例的
save()方法,而非模型本身的save(),同时要处理异步操作的结果。
修改后的User模型代码
const mongoose = require('mongoose') const { Schema } = mongoose; const UserSchema = new Schema({ name: { type: String, require: true, }, email: { type: String, require: true, unique: true, }, password: { type: String, require: true, }, date: { type: Date, default: Date.now, }, }); // 修正导出语法 module.exports = mongoose.model('user', UserSchema)
修改后的路由代码
// 统一导入变量名为User const User = require('../modules/User') const express = require('express') const router = express.Router(); // 建议用POST请求处理数据提交(GET请求通常无req.body) router.post('/', (req, res) => { console.log(req.body) // 创建User实例 const newUser = new User(req.body); // 异步保存并处理结果 newUser.save() .then(() => res.send('用户保存成功')) .catch(err => res.status(400).send(err.message)); })
额外提醒:确保你的Express应用已配置body-parser中间件(或Express内置的express.json()/express.urlencoded()),否则req.body会是undefined。
内容的提问来源于stack exchange,提问作者Tejesh Bheemavarapu
相关产品推荐
相关产品推荐

