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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 15:45:59