TypeError: Joi.validate is not a function问题解决

TypeError: Joi.validate is not a function的解决方法

问题
使用joi模块中的validate方法进行表单验证时,命令窗口报错TypeError: Joi.validate is not a function

// 定义对象的验证规则
const schema = {
	username: Joi.string().min(2).max(5).required().error(new Error('username属性没有通过验证')),
	birth: Joi.number().min(1900).max(2020).error(new Error('birth没有通过验证'))
};

async function run () {
	try {
		// 实施验证
		await Joi.validate({username: 'ab', birth: 1800}, schema);
	}catch (ex) {
		console.log(ex.message);
		return;
	}
	console.log('验证通过')

}

原因
老版本的Joi.validate方法被弃用,新版本的joi不支持该方法

解决方法
方法一

版本回退,卸载现在的joi,重新安装一个以前的版本

//卸载当前版本
 npm uninstall joi

//回退版本
 npm install @14.3.1

方法二

使用新版joi的验证方法 validateAsync()

详细使用方法可参照joi官方介绍 https://joi.dev/api/?v=17.4.2

参照新版方法,把代码改为

// 定义对象的验证规则
// const schema = {
//	  username: Joi.string().min(2).max(5).required().error(new Error('username属性没有通过验证')),
//	  birth: Joi.number().min(1900).max(2020).error(new Error('birth没有通过验证'))
// };
const schema = Joi.object({
    username: Joi.string().min(2).max(5).required().error(new Error('username属性没有通过验证')),
	birth: Joi.number().min(1900).max(2020).error(new Error('birth没有通过验证')) 
	});


async function run() {
    try {
        // 实施验证
        // await Joi.validate({ username: 'ab', birth: 1800 }, schema);
        await schema.validateAsync({username: 'ab', birth: 1800 });
    } catch (ex) {
        console.log(ex.message);
        return;
    }
    console.log('验证通过');
}
run();

验证通过
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值