MERN栈API偶发POST请求失败:centralEmail未定义报错排查
偶发ReferenceError: centralEmail未定义问题排查(MERN栈API)
我搭建了一个通用MERN栈API,功能是接收用户提交的大小不一的数据并存储至数据库,但目前出现偶发报错:
UnhandledPromiseRejectionWarning: ReferenceError: centralEmail is not defined
奇怪的是,centralEmail属于另一个Schema的字段,完全搞不懂为什么这个报错会出现在当前路由里。
相关代码
路由代码(rolelistings.js)
//CREATE A ROLE DESC router.post("/postlisting", async (req,res)=>{ const newListing = new Rolelistings(req.body) console.log(req.body) try{ const savedListing = await newListing.save(); console.log('its working') res.status(200).json(savedListing) }catch(err){ console.log('has failed while posting') res.status(500).json(err) console.log('check eroror log to see why') } })
RoleListings Schema定义
const mongoose = require("mongoose") //CompanyProfileSchema const RoleListings = new mongoose.Schema( { role:{type:String, required: true, default: ""}, companyListing:{type:String, required: false, default: ""}, companyID:{type:String, required: false, default: ""}, dateListing:{type:String, required: false, default: ""}, status: {type: String, required: false}, finalFormat:{type:String, required: false, default: ""}, listingScore:{type: Number}, companyEmail:{type:String}, selectedStyle:{type:String, required: false, default: ""}, selectedLocation:{type:String, required: false, default:""}, selectedIndustry:{type:String, required: false}, optionalMinSalaryRange:{type:String, required: false, default: ""}, optionalMaxSalaryRange:{type:String, required: false, default: ""}, optionalQuals:{type:String, required: false, default: ""}, selectedInterview1:{type:String, required: false, default: ""}, selectedInterview2:{type:String, required: false, default: ""}, selectedInterview3:{type:String, required: false, default: ""}, optionalSkills:{type:[String], required: false, default: []}, optionalPerks:{type:[String], required: false, default: []}, optionalWFH:{type:String, required: false, default: ""}, optionalQuals:{type:[String], required: false, default: []}, // lookingFor:{type:[String], required: false, default: []}, dailyResponsibilites:{type:[String], required: false, default: []}, FAQS:{type:[String], required: false, default: []}, // requiredFields:{type:[String], required: false, default: []}, }, ); module.exports = mongoose.model("RoleListings", RoleListings)
主文件路由配置(index.js)
//maintains the role listings, where the endpoint will be GET listings, or POST listing app.use("/api/rolelisting", rolelistingsRoute)
完整报错信息
(node:18160) UnhandledPromiseRejectionWarning: ReferenceError: centralEmail is not defined at C:\ApplyWithin_repo_file\ApplyWithin\backend\routes\rolelistings.js:24:19 at processTicksAndRejections (internal/process/task_queues.js:95:5) (Use `node --trace-warnings ...` to show where the warning was created) (node:18160) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1) (node:18160) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
排查方向
- 核对实际运行的路由代码:报错明确指向
rolelistings.js第24行,你当前提供的代码只有17行左右,说明展示的代码不是服务器正在运行的版本。直接查看该文件第24行,大概率存在未定义的centralEmail变量引用。 - 检查Schema钩子/中间件:如果路由代码确实没有相关引用,确认
RoleListingsSchema是否添加了pre('save')这类中间件,钩子函数里可能调用了涉及centralEmail的逻辑但未正确定义变量。 - 排查关联逻辑触发条件:偶发报错可能和特定请求数据有关,某些数据会触发关联另一个Schema的操作,但代码中错误地直接使用
centralEmail而非从文档/请求对象中获取。 - 验证代码同步状态:确保本地修改已经部署到服务器,且服务器已经重启加载最新代码,避免因缓存或旧代码导致的不一致问题。
内容的提问来源于stack exchange,提问作者n_d22
相关产品推荐
相关产品推荐

