Javascript 如何解决TypeError:express validator不是一个函数

Javascript 如何解决TypeError:express validator不是一个函数,javascript,mysql,node.js,express,mern,Javascript,Mysql,Node.js,Express,Mern,我正在使用ExpressValidator版本6.4.0。我在运行服务器时遇到此错误。我尝试使用自定义验证,并为验证器、控制器和路由创建了单独的文件 这是主服务器文件“index.js” 我的验证器文件有两个函数,一个用于检查验证,另一个用于返回基于验证“user.validator.js”的响应 这是我在user.controller.js中的唯一函数 exports.create = (req, res, next) => { try { console.log

我正在使用ExpressValidator版本6.4.0。我在运行服务器时遇到此错误。我尝试使用自定义验证,并为验证器、控制器和路由创建了单独的文件

这是主服务器文件“index.js”

我的验证器文件有两个函数,一个用于检查验证,另一个用于返回基于验证“user.validator.js”的响应

这是我在user.controller.js中的唯一函数

exports.create = (req, res, next) => {
    try {
        console.log(req.body);
        return res.json(req.body);
    } catch (error) {
        return next(error);
    }
}
这是路由文件“user.routes.js”


在版本6中,您不需要使用app.use(expressValidator());只需在中间件中使用express validator实用程序,就可以在github问题中看到一些实现:

这是我的实现。 删除:

app.use(expressValidator())
然后:

var router=express.router();
const{check,validationResult}=require('express-validator');
router.post(“/寄存器”,
[
检查('email','email无效')。isEmail(),
选中('username','username字段为必填项').not().isEmpty(),
检查('password','password字段是必需的')。not().isEmpty())
], 
功能(req、res、next){
//检查错误
常量错误=验证结果(req);
如果(错误){
console.log(错误);
res.render('register',{errors:errors.array()});
}
否则{
console.log(“无错误”);
res.render('仪表板',{消息:'成功注册'});
}
});

在版本6中,您不需要使用app.use(expressValidator());只需在中间件中使用express validator实用程序,就可以在github问题中看到一些实现:

这是我的实现。 删除:

app.use(expressValidator())
然后:

var router=express.router();
const{check,validationResult}=require('express-validator');
router.post(“/寄存器”,
[
检查('email','email无效')。isEmail(),
选中('username','username字段为必填项').not().isEmpty(),
检查('password','password字段是必需的')。not().isEmpty())
], 
功能(req、res、next){
//检查错误
常量错误=验证结果(req);
如果(错误){
console.log(错误);
res.render('register',{errors:errors.array()});
}
否则{
console.log(“无错误”);
res.render('仪表板',{消息:'成功注册'});
}
});

您好,thread帮您解决问题了吗?谢谢,它起作用了……您好,thread帮您解决问题了吗?谢谢,它起作用了。。。
const { check, validationResult } = require('express-validator');

const checkValidation = (method) => {
    switch (method) {
        case "create": {
            return [
                check("first_name").exists().withMessage("It is mandatory to enter your first name"),
                check("last_name").exists().withMessage("It is mandatory to enter your last name"),
                check("email").exists().withMessage("It is mandatory to enter email")
                .isEmail().withMessage("The email must be in correct format as foo@bar.com"),
                check("password").exists().withMessage("It is mandatory to enter password")
                .isLength({ min: 6 }).withMessage("Password must be at least 6 characters in length"),
                check("role").exists().withMessage("It is mandatory to enter role")
                .isInt().withMessage("Role must be a number")
            ];
        }
    }
}

const validate = (req, res, next) => {
    const errors = validationResult(req);

    if (errors.isEmpty()) {
        return next();
    }

    const extractedErrors = [];
    errors.array().map(err => extractedErrors.push({ [err.param]: err.msg }))

    return res.status(422).json({
        errors: extractedErrors,
    });
}

module.exports = {
    checkValidation,
    validate,
};

exports.create = (req, res, next) => {
    try {
        console.log(req.body);
        return res.json(req.body);
    } catch (error) {
        return next(error);
    }
}
module.exports = app => {
    const user = require('../controllers/user.controller');
    const {checkValidation, validate } = require('../validators/user.validate');
    let router = require('express').Router();

    //route to create a new tutorial
    router.post('/', checkValidation('create'), validate(), user.create);

    app.use('/api/users', router);
}