TypeError:Joi.validate 不是函数

Posted

技术标签:

【中文标题】TypeError:Joi.validate 不是函数【英文标题】:TypeError: Joi.validate is not a function 【发布时间】:2021-01-30 16:05:52 【问题描述】:

我已经尝试了本网站和 GitHub 中提供的所有解决方案,但它对我不起作用,因为我的 routes/user.js 的结构不同。另外,我是 Nodejs 的新手。 我需要帮助来更改 routeHelper.js 中的const result = Joi.validate(req.body, schema);

const validateBody, schemas = require('../helpers/routehelpers');  
router.route('/signup')
.post(validateBody(schemas.authSchema),userController.signup);

routes/user.js

 //routeHelper.js
 const Joi = require('joi');
    module.exports = 
      validateBody: (schema) => 
        return (req, res, next) => 
          const result = Joi.validate(req.body, schema);
          if (result.error) 
            return res.status(400).json(result.error);
          

      if (!req.value)  req.value = ; 
      req.value['body'] = result.value;
      next();
    
  ,

  schemas: 
    authSchema: Joi.object().keys(
      email: Joi.string().email().required(),
      password: Joi.string().required()
    )
  


//routes/user.js
const express = require('express'),
      router  = require('express-promise-router')();
const userController = require('../controller/user');
const validateBody, schemas = require('../helpers/routehelpers');
const passport = require('passport')
const passportConfig = require('../passport')

router.route('/signup')
.post(validateBody(schemas.authSchema),userController.signup);



router.route('/signin')
.post(userController.signin);

router.route('/secret')
.get(passport.authenticate('jwt',session:false),userController.secret);

module.exports = router;

【问题讨论】:

你在文件顶部做了const Joi = require('joi') 吗。注意大写J @Tusharsaxena 我做了 const Joi = require('joi') 【参考方案1】:

const result = schema.validate(req.body); 这里提到了-> https://github.com/sideway/joi/issues/2145#issuecomment-568173652

【讨论】:

以上是关于TypeError:Joi.validate 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:“TypeError:函数名称不是 HTMLButtonElement.onclick (/:2:54) 处的函数”

TypeError:不是构造函数

TypeError: jQueryxxxxxx 不是函数

TypeError: $(...).on 不是函数

TypeError: Object(...) 不是函数

TypeError:Ajv 不是构造函数