1. ホーム
  2. javascript

[解決済み] TypeError: req.checkBody は関数ではありません。

2022-02-28 23:54:35

質問

サインアップシステムにバリデーションを実装しようとしているのですが、エラーが発生します。

     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
      });
    });

  });

確認したところ、フロントエンドから情報を取得していました。また、別のアプリでほぼ同じコードが動作していました(module.exports = function(app, express) { }でラップされていないところです)。

解決するには?

をインストールする必要があります。 express-validator 以下のコマンドを使用します。

npm install express-validator

を追加します。

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

直後

var api = express.Router();

参照 TypeError: req.checkBody は bodyparser と expressvalidator モジュールを含む関数ではありません。 詳細はこちら