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

使用Express.js提交数据时始终触发BadRequestError求助

排查Express提交数据触发BadRequestError的问题

我在使用Node.js的Express.js框架提交数据时,已编写规范的错误处理函数,但每次提交都会触发BadRequestError,错误提示为:throw new CustomError.BadRequestError('All fields are required, please verify your data!')。

相关代码

创建任务控制器函数

const createTaskController = async (req, res) => {
  const {name, completed} = req.body;
  console.log(req.body);
  if ( !name || !completed) {
    throw new CustomError.BadRequestError('All fields are required, please verify your data!')
  }
    const task = await createTaskService({...req.body});
    res.status(StatusCodes.CREATED).send({msg: 'Task created successfully!'})
};

BadRequestError类代码

class BadRequestError extends CustomAPIError {
    constructor(message) {
        super(message)
        this.StatusCodes = StatusCodes.BAD_REQUEST
    }
}

CustomError导出代码

const CustomAPIError = require('./custom-api')
const UnauthenticatedError = require('./unathenticated')
const NotFoundError = require('./not-found')
const BadRequestError = require('./bad-request')


module.exports = {
    CustomAPIError,
    UnauthenticatedError,
    NotFoundError,
    BadRequestError
}

排查解决方案

  • 检查请求体解析中间件:Express默认不会自动解析JSON或表单请求体,必须在路由注册前添加解析中间件,否则req.body会是undefined,导致字段判断条件始终为真。在项目入口文件(如app.js)中添加:

    const express = require('express');
    const app = express();
    
    // 解析JSON格式请求体
    app.use(express.json());
    // 解析URL编码格式请求体
    app.use(express.urlencoded({ extended: true }));
    
  • 核对请求字段名:确认前端提交的字段名与后端解构的name、completed完全一致(大小写敏感),比如前端传Name或Completed会导致解构失败,字段值为undefined。

  • 调整completed字段的判断逻辑:如果completed是布尔类型,当前代码会把false值判定为“缺失”(因为!false为true)。若允许completed为false,只要求字段存在,可修改判断条件:

    if (!name || typeof completed === 'undefined') {
      throw new CustomError.BadRequestError('All fields are required, please verify your data!')
    }
    
  • 查看控制台req.body输出:通过你添加的console.log(req.body),确认输出内容是否包含name和completed字段。如果输出为{}或undefined,说明请求体未被正确解析,优先检查中间件配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:15:31