Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript expressValidator 5.3.1至6.6.0 expressValidator不是一个函数_Javascript_Node.js - Fatal编程技术网

Javascript expressValidator 5.3.1至6.6.0 expressValidator不是一个函数

Javascript expressValidator 5.3.1至6.6.0 expressValidator不是一个函数,javascript,node.js,Javascript,Node.js,我正在尝试将express validator 5.3.1更新为6.6.0。我对文档有很多困惑。我试图更新我的代码,但没有成功。我有一个错误,expressValidator不是函数或req.check不是函数。我知道旧的api已经过时了,但我想更新到6.6.0。你能帮我吗,因为我不知道。我尝试了req.checkBody或req.body,但仍然不是函数。多谢各位 app.js: const express = require("express"); const mongo

我正在尝试将express validator 5.3.1更新为6.6.0。我对文档有很多困惑。我试图更新我的代码,但没有成功。我有一个错误,expressValidator不是函数或req.check不是函数。我知道旧的api已经过时了,但我想更新到6.6.0。你能帮我吗,因为我不知道。我尝试了req.checkBody或req.body,但仍然不是函数。多谢各位

app.js:

const express = require("express");
const mongoose = require("mongoose");
const morgan = require("morgan");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const expressValidator = require("express-validator");


require('dotenv').config();

// import routes
const userRoutes = require('./routes/user');

//app
const app = express();

//db connection
mongoose.connect(process.env.DATABASE, {
    useNewUrlParser:true,
    useCreateIndex:true
}).then(() => console.log('Database Connected'));

//middlewares
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(expressValidator());

//routes middleware
app.use("/api",userRoutes);

const port = process.env.PORT || 8000

app.listen(port, () =>{
    console.log(`Server is running on port ${port}`)
});
/验证器/index.js

exports.userSignupValidator = (req, res, next) => {
    req.check('name', 'Name is required').notEmpty();
    req.check('email', 'Email must be between 3 to 32 characters')
        .matches(/.+\@.+\..+/)
        .withMessage('Email must contain @')
        .isLength({
            min: 4, max: 32
        });
    req.check('password', 'Password is required').notEmpty();
    req.check('password').isLength({min: 6})
        .withMessage('Password must contain at least 6 characters')
        .matches(/\d/)
        .withMessage('Password must contain a number');
        const errors = req.validationErrors()
        if(errors) {
            const firstError = errors.map(error => error.msg)[0]
            return res.status(400).json({error: firstError});
        }
        next();
};
routes/user.js

const express = require("express");
const router = express.Router();

const {signup} = require("../controllers/user");

const {userSignupValidator} = require('../validator');

router.post("/signup", userSignupValidator, signup);

module.exports = router;
试试这个-

  • app.js-->删除express validator的所有实例。这意味着您不需要在此处导入它,也不必将其用作中间件,因此删除
    const expressValidator=require(“expressValidator”)
    app.use(expressValidator())

  • /验证程序/index.js--> 在此文件中从express validator导入支票。
    const{check}=require('express-validator')。使用
    check
    代替
    req.check

  • 注册控制器--> 在注册控制器中使用
    const{validationResult}=require('express-validator')以获取验证结果


  • 要获得更好的图片,您可以访问我的存储库

    非常感谢,它正在工作。verfy Well:)非常感谢。@SergioA很乐意提供帮助。如果答案真的对你有帮助,请投票表决。