You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:41:15