错误显示(Postman):
“Cannot mix different versions of joi schemas”,即“无法混合不同版本的 joi 模式”。
![](https://img-blog.csdnimg.cn/img_convert/5266dfb80efe1e30dea8c28529224cd2.png)
原因:
无法混合不同版本的 joi 模式。
导入的包:
"@escook/express-joi" : "^1.1.1"
"@hapi/joi" : "^17.1.0"
"joi" : "^17.8.3"
bcryptjs
cors
express
mysql
思考:
在导入的包中,@escook/express-joi 、@hapi/joi 、joi 是类似的。这里引发了我的思考。
@escook/express-joi 中的依赖包含 joi ,该joi的版本是 "17.4.0" 。
@hapi/joi 中包含joi文件夹,该 joi 的版本是 "17.1.0" 。
joi包版本是 "17.8.3" 。
这里结合报错的信息“无法混合不同版本的 joi 模式”,我认为原因是:由于joi的迭代更新,导致几个包的joi版本不相同,所以会报错。
上述错误原因只是我自己的想法,不知道对错,欢迎指正!
错误代码:
![](https://img-blog.csdnimg.cn/img_convert/5b06e82859d28a45b5bfb11127791122.png)
解决:
将 const joi = require('@hapi/joi'); 改为 const joi = require('joi');
示例:
![](https://img-blog.csdnimg.cn/img_convert/4203b1574437fc0d6d68b4fc76272f9c.png)
结果(Postman):
![](https://img-blog.csdnimg.cn/img_convert/f711b518f7d16fca433dbf69f4325f14.png)