TypeScript中使用express-validator时接口无响应该如何解决?
问题核心原因
express-validator的校验规则方法需要主动调用后才会生成合法的中间件函数,你代码中body('userName').notEmpty仅引用了notEmpty函数本身,没有执行生成校验逻辑,导致请求卡在中间件层无法进入后续业务代码,所以接口没有返回响应。
修复后的代码
import express from "express"; import { body, validationResult } from "express-validator"; export const accountRouter = express.Router(); accountRouter.post( "/signIn", // 给notEmpty添加执行括号 body('userName').notEmpty(), body('password').notEmpty(), async ( req: express.Request, res: express.Response) => { const errors = validationResult(req); if (!errors.isEmpty()) return res.sendStatus(400); // 你的业务逻辑 // ...doStuff(); })
其他必要配置检查
- 确认你在项目入口注册路由之前,已经配置了express的json请求体解析中间件,否则
express-validator无法读取application/json格式的请求体参数,也会导致校验不生效:
// 路由注册前添加 app.use(express.json())
- 若需要自定义校验错误提示,可以给
notEmpty方法传参,示例:body('userName').notEmpty({message: '用户名不能为空'})
内容的提问来源于stack exchange,提问作者Yoey
相关产品推荐
相关产品推荐

