Node.js项目运行报ReferenceError: _user is not defined错误如何解决
问题原因及修复方案
首要报错修复(直接解决ReferenceError: _user is not defined)
你在routes/user.js的signup接口中定义变量时存在语法错误,const关键字和变量名_user被连写为了const_user,导致后续调用的_user没有被定义:
// 错误写法 const_user = new User({ // 修正写法 const _user = new User({
修改后即可解决当前的变量未定义报错。
其他潜在问题修复(避免后续触发其他报错)
- 数据库连接字符串语法错误
index.server.js里的MongoDB连接字符串开头缺失反引号,且本地部署的MongoDB不需要使用+srv协议:
// 错误写法 mongoose.connect( mongodb+srv://${process.env.MONGO_DB_USER}:${process.env.MONGO_DB_PASSWORD}@localhost:27017/${process.env.MONGO_DB_DATABASE}?retryWrites=true&w=majority`, // 本地部署修正写法 mongoose.connect( `mongodb://${process.env.MONGO_DB_USER}:${process.env.MONGO_DB_PASSWORD}@localhost:27017/${process.env.MONGO_DB_DATABASE}?retryWrites=true&w=majority`,
如果使用的是MongoDB Atlas云服务可保留+srv前缀,补全开头的反引号即可。
- 字段名不匹配导致的必填校验报错
signup接口中解构的firstname、lastname为全小写格式,和models/user.js里定义的驼峰格式字段firstName、lastName不匹配,会导致字段为空触发必填校验失败:
// 错误写法 const { firstname, lastname, email, password } = req.body; const _user = new User({ firstname, lastname, // 修正写法 const { firstname: firstName, lastname: lastName, email, password } = req.body; const _user = new User({ firstName, lastName,
- 密码校验方法定义错误
models/user.js中定义实例方法的属性应为methods,你少写了后缀s:
// 错误写法 userSchema.method = { // 修正写法 userSchema.methods = {
内容的提问来源于stack exchange,提问作者Fizzy88
相关产品推荐
相关产品推荐

