Postman发送请求时报Joi.validate is not a function错误如何解决?
问题原因
你触发的TypeError: Joi.validate is not a function报错,是因为你本地安装的Joi为v16及以上版本,该版本已经完全移除了旧版的全局Joi.validate()方法,改用了新的API调用规则。
修复方案
有两种修复方式可选:
- 方式一:适配新版Joi API(更推荐,避免旧版本安全漏洞)
修改你的验证逻辑代码如下:
//Validation const Joi = require('joi'); //Register Validation const registerValidation = data => { // 改用Joi.object包裹校验规则生成schema实例 const schema = Joi.object({ name: Joi.string() .min(6) .required(), email: Joi.string() .min(6) .required() .email(), password: Joi.string() .min(6) .required() }); // 调用schema实例上的validate方法校验数据 return schema.validate(data); }; //Login Validation const loginValidation = data => { const schema = Joi.object({ email: Joi.string() .min(6) .required() .email(), password: Joi.string() .min(6) .required() }); return schema.validate(data); }; module.exports.registerValidation = registerValidation; module.exports.loginValidation = loginValidation;
- 方式二:降级Joi到旧版本
如果你不想改动现有代码,可执行以下命令安装v15版本的Joi:npm install joi@15
修改完成后重新启动服务,再用Postman发送请求即可解决该报错。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

