使用express-validator时出现req.check is not function错误如何解决
报错原因
- 你当前使用的
express-validator为v6.0.0及以上的新版本,该版本已经完全废弃并移除了v5及更早版本提供的req.check、req.validationErrors等挂载在req对象上的校验API,改用声明式的验证链中间件架构,所以调用req.check会抛出不存在该函数的错误。
修复方案
提供两种可选修复方式,推荐优先使用第二种适配新版的方案:
方案1:降级到兼容旧API的版本
直接卸载当前版本,安装v5最后一个稳定版本即可,无需修改原有业务代码:
npm uninstall express-validator npm install express-validator@5.3.1
安装完成后重启服务即可正常运行。
方案2:适配新版express-validator API(推荐)
新版API性能更好、维护更活跃,只需要修改校验逻辑的代码即可:
- 修改验证器页面代码:
const { body, validationResult } = require('express-validator'); exports.userSignupValidator = [ // 密码非空校验 body('password', 'Password is required').notEmpty(), // 密码长度、格式校验 body('password') .isLength({ min: 6 }) .withMessage('Password must contain at least 6 characters') .matches(/\d/) .withMessage('Password must contain a number'), // 统一错误处理中间件 (req, res, next) => { const errors = validationResult(req); if (!errors.isEmpty()) { const firstError = errors.array().map(error => error.msg)[0]; return res.status(400).json({ error: firstError }); } next(); } ];
- 原有路由代码无需做任何修改,重启服务即可正常运行。
内容的提问来源于stack exchange,提问作者053_ Kartik
相关产品推荐
相关产品推荐

