TypeError:req.checkBody不是函数

时间:2016-08-26 20:02:07

标签: javascript node.js express

我试图在注册系统中实施一些验证,但我收到错误:

     TypeError: req.checkBody is not a function

来自以下代码:

module.exports = function(app, express) {
  var express = require('express');
  var api = express.Router();

  // post users to database
  api.post('/signup', function(req, res) {
    var email = req.body.email;
    var password = req.body.password;
    var password2 = req.body.password2;
    var key = req.body.key;

    // Validation
    req.checkBody('email', 'Email is required.').notEmpty();
    req.checkBody('email', 'Email is not valid').isEmail(); 
    req.checkBody('password', 'Password is required').notEmpty();
    req.checkBody('password2', 'Passwords do not match').equals(req.body.password);

    var errors = req.validationErrors();

    if(errors) {
      res.render('register', {
        errors: errors
      });
    } else {
      var user = new User({
        email: email,
        password: password
      });
      var token = createToken(user);
    }

    // save to database
    user.save(function(err) {
      if (err) {
        res.send(err);
        return;
      }

      res.json({
        success: true,
        message: 'User has been created',
        token: token
      });
    });

  });

我已经检查了它并且它从前端获取了信息,并且我在另一个应用程序中有几乎相同的代码工作(其中没有包含在模块中。 exports = function(app,express){}

4 个答案:

答案 0 :(得分:13)

您需要使用以下命令

安装express-validator
npm install express-validator

然后添加

var expressValidator = require('express-validator');
api.use(expressValidator())

后立即

var api = express.Router();

有关详细信息,请参阅TypeError: req.checkBody is not a function including bodyparser and expressvalidator module

答案 1 :(得分:1)

我遇到了同样的问题,我发现问题出在当前版本的express_validator。我不得不降级为“ express-validator”:“ 5.3.1”,它对我有用。 我认为有必要解决该问题。

答案 2 :(得分:0)

与上述答案相同,安装express-validator后,添加

server.use(expressValidator()); 

const express=require("express"); 

const server=express(); 

解决了我的问题。

答案 3 :(得分:0)

使用express-validator 6,您将必须执行以下操作:

导入

var router = express.Router();
var { body, validationResult} = require('express-validator');

验证

body('username').isEmail()
body('password').isLength({ min: 5 })

错误

const errors = validationResult(req);