2017-05-12 1 views
1

私は、ログイン(POSTリクエスト)のための非空のフィールドを検証する必要があるが、私はこのエラーを取得:ノードとパスポートで空でないフィールドを検証する方法は?

TypeError: req.checkBody is not a function 
    at D:\IDoo projects\ExpressGenerado\config\routes.js:76:9 

これは私のルートファイルです:

app.post('/login',function(req,res){ 
    req.checkBody('email', 'Email is required').notEmpty(); 
    req.checkBody('password', 'Password is required').notEmpty(); 
    var errors = req.validationErrors(); 

    if (errors) { 

     res.render('signup',{message: req.flash('loginMessage')}); 

    } 
    else{ 
     passport.authenticate('local-login', { 
      successRedirect : '/profile', // redirect to the secure profile section 
      failureRedirect : '/login', // redirect back to the signup page if there is an error 
      failureFlash : true // allow flash messages 
     })(req,res); 
    } 
}); 

そして、私のエントリポイントアプリファイル、app.use(expressValidator)私のウェブがハングアップし、検証しないを追加した後、それはありません何もありません:あなたはこれをやっている

var express = require('express'); 
var expressValidator = require ('express-validator'); 
var app = express(); 
var multer = require('multer') 
var constants = require('constants'); 
var constant = require('./config/constants'); 

var port = process.env.PORT || 8042; 
var passport = require('passport'); 
var flash = require('connect-flash'); 
var path = require('path'); 

var morgan = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var session = require('express-session'); 

var dateFormat = require('dateformat'); 
var now = new Date(); 
app.use(expressValidator); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: true})); 


require('./config/passport')(passport); // pass passport for configuration 


app.use(morgan('dev')); // log every request to the console 
app.use(cookieParser()); // read cookies (needed for auth) 

app.use(express.static(path.join(__dirname, 'public'))); 
app.set('views', path.join(__dirname, 'app/views')); 
app.set('view engine', 'ejs'); 

app.use(session({ secret: 'zomaareenstukjetekstDatjenietzomaarbedenkt' })); 
app.use(passport.initialize()); 
app.use(passport.session()); // persistent login sessions 
app.use(flash()); // use connect-flash for flash messages stored in session 


require('./config/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport 

app.listen(port); 
console.log('The magic happens on port ' + port); 
+0

'req.checkBody()は'によって提供される[ '発現-validator'] (https://github.com/ctavan/express-validator)、あなたのExpressアプリケーションにロードされていないか、正しく読み込まれていません( 'POST/login'ルートが宣言される前に読み込まれていなければなりません)。 – robertklep

+0

私は以下を追加しました:var expressValidator = require( 'express-validator'); app.use(expressValidator);私のエクスプレスアプリでは動作しません。エラーを表示せずにフリーズし、検証しません。 –

+0

これは正しく表示されません: 'expressValidator'はミドルウェア関数を返す関数ですが、呼び出していません。これは、通常、リクエストがハングすることになりますが、それはあなたの状況では起こりません。これは、あなたが「遅すぎる」ということを意味するでしょう。 Expressアプリケーション、ミドルウェア、およびルートを設定する方法の簡潔なバージョンを投稿できますか? – robertklep

答えて

1

app.use(expressValidator); 

しかし、expressValidatorは、ミドルウェア機能を返す関数であるので、このようにそれを使用する必要がある:

app.use(expressValidator()); 
+0

あなたの時間と忍耐ありがとうございました。まだ勉強してる.... :) –

関連する問題