You need to enable JavaScript to run this app. express-validator v6.11.1使用body方法报IsEmpty不是函数如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

express-validator v6.11.1使用body方法报IsEmpty不是函数如何解决?

错误根因

你出现这个报错是因为拼写错误,express-validator 6.11.1版本的非空校验方法名为首字母小写的isEmpty(),你代码中写成了大写首字母的IsEmpty(),程序找不到对应方法才抛出类型错误。

修复方案

修改validator.js文件里的signupValidation方法,把两处IsEmpty替换为isEmpty即可,修改后的代码如下:

const { body, validationResult } = require('express-validator')
const bcrypt = require('bcrypt')

const signupValidation = () => {
    return [
        body('firstname')
            .not().isEmpty().withMessage('Firstname field is required'),
        body('lastname')
            .not().isEmpty().withMessage('Lastname field is required'),
        // 可按需补充其他校验规则,示例如下
        body('email').isEmail().withMessage('请输入合法的邮箱地址'),
        body('password').isLength({min:6}).withMessage('密码长度不能少于6位')
    ]
}

const validate = (req, res, next) => {
    const errors = validationResult(req)
    if (errors.isEmpty()) {
        return next()
    }
    const extractedErrors = []
    errors.array().map(err => extractedErrors.push({ msg: err.msg }))

    res.status(200).json({
        statusCode: 422,
        error: extractedErrors
    })
}

module.exports = {
    signupValidation,
    validate
}

修改完成后重启服务,就能正常执行校验逻辑,你示例请求中firstname传空值的场景会正确返回你预设的422错误提示。

小提示:express-validator所有内置校验方法都是首字母小写的驼峰命名,后续使用其他校验规则时注意拼写即可避免同类错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 15:24:04