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

本地MERN应用POST请求出现500内部服务器错误求助

MERN应用POST请求500内部服务器错误修复方案

本地运行的MERN应用中,前端(端口3000)向后端(端口5035)发送POST请求POST http://localhost:5035/api/todos时出现500内部服务器错误,该请求通过POSTMAN可正常执行,但前端调用失败。以下是针对性修复方案:


一、前端请求数据格式错误

前端addTodo方法中,axios发送的{ todo }是包含text属性的对象,但后端Model要求todo字段为字符串类型,导致数据库存储验证失败。

修复代码:

try {
    await axios.post("http://localhost:5035/api/todos", {
     todo: todo.text // 提取text属性值,传递字符串而非整个对象
    });
} catch (error) {
    console.log(error);
}

二、后端Model语法错误

Model.js中Schema定义缺失闭合花括号,导致代码解析失败。

修复代码:

const mongoose = require("mongoose");

const MyTodoListSchema = new mongoose.Schema({
  todo: {
    type: String,
    default: "",
    required: true
  } // 补充todo字段的闭合花括号
}); // 补充Schema定义的闭合花括号

const MyTodoList = mongoose.model("MyTodoList", MyTodoListSchema, 'coltodolist');
module.exports = MyTodoList;

三、后端Controller语法错误

Controller.js的getAllTodo方法中,.select()语句后多了一个多余的),导致代码语法错误,影响路由正常运行。

修复代码:

//get all todos
exports.getAllTodo = (req, res) => {
    res.setHeader("Access-Control-Allow-Origin", "*")
    res.setHeader("Access-Control-Allow-Credentials", "true");
    res.setHeader("Access-Control-Max-Age", "1800");
    res.setHeader("Access-Control-Allow-Headers", "content-type");
    res.setHeader( "Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, PATCH, OPTIONS" ); 
    MyTodoList.find()
      .select('taskId todo priority') // 移除多余的闭合括号
      .then((allTodo) => {
        return res.status(200).json({
          Todo: allTodo
        });
        
      })
      .catch((err) => {
        res.status(500).json({
          success: false,
          message: 'Server error. Please try again.',
          error: err.message,
        });
      });
}

额外优化建议

  1. 后端已通过app.use(cors())配置跨域,getAllTodo方法中重复设置的CORS头可删除,避免冗余。
  2. 前端setTodos(newTodos)后,console.log(todos)无法打印最新数组状态(setState为异步操作),可改为console.log(newTodos)或用useEffect监听todos变化。

内容的提问来源于stack exchange,提问作者degr8sid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:00:58