Node.js中Joi.validate不是函数的500错误求助
解决Joi.validate is not a function错误
这个错误是因为你使用的Joi版本(v16及以上)已移除全局Joi.validate()方法,该版本要求直接通过定义好的schema对象调用validate()方法。
具体修改方案
修改校验中间件代码,将全局的Joi.validate()替换为传入的validationObject(即你的校验规则schema)的validate()方法:
const Joi = require('joi'); const validationMiddleware = (validationObject, isGet = false) => (req, res, next) => { // 简化请求参数获取逻辑 const body = Object.keys(req.query).length > 0 ? req.query : req.body; // 使用schema自身的validate方法替代全局Joi.validate const { error } = validationObject.validate(body); if (error) { return res .status(401) .send({ code: 401, message: error.message }); } return next(); }; module.exports = validationMiddleware;
补充说明
- 如果你非要保留
Joi.validate()写法,可以降级Joi到v15及以下版本,但不推荐——新版本Joi提供了更丰富的校验特性与更好的性能。 - 你当前的校验规则定义(
Joi.object(...))是正确的,无需修改这部分代码。
内容的提问来源于stack exchange,提问作者Numaira Nawaz
相关产品推荐
相关产品推荐

