购物车更新时POST /cartdata出现500内部服务器错误求助
问题排查与修复
核心错误原因
- 错误调用非存在的方法:你在POST
/cartdata路由中调用了await req.session.cart.save(),但req.session.cart是你赋值的普通JavaScript对象,并非Mongoose模型实例,根本没有save()方法,这会直接抛出TypeError,触发500内部服务器错误。 - 未返回客户端响应:该POST路由执行完毕后没有向客户端返回任何响应(如
res.json()/res.send()),服务器会因请求无法正常结束而报错。
修复后的后端代码(POST /cartdata路由)
router.post('/cartdata', asyncError(async (req, res) =>{ req.session.cart = req.body.data; console.log(req.session.cart); // 调用session自身的save方法保存整个会话,而非cart对象 await req.session.save(); // 返回成功响应给客户端 res.json({ success: true, cart: req.session.cart }); }))
额外优化建议
- 客户端
postData函数可增加详细错误日志,方便后续排查:
const postData = async (data) => { try { const res = await axios.post('http://localhost:3000/cartdata', { data: data }); console.log('posted', res.data); } catch (err) { console.log('error details:', err.response?.data || err.message); } };
内容的提问来源于stack exchange,提问作者Faizan Abbasi
相关产品推荐
相关产品推荐

