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);
'req.checkBody()は'によって提供される[ '発現-validator'] (https://github.com/ctavan/express-validator)、あなたのExpressアプリケーションにロードされていないか、正しく読み込まれていません( 'POST/login'ルートが宣言される前に読み込まれていなければなりません)。 – robertklep
私は以下を追加しました:var expressValidator = require( 'express-validator'); app.use(expressValidator);私のエクスプレスアプリでは動作しません。エラーを表示せずにフリーズし、検証しません。 –
これは正しく表示されません: 'expressValidator'はミドルウェア関数を返す関数ですが、呼び出していません。これは、通常、リクエストがハングすることになりますが、それはあなたの状況では起こりません。これは、あなたが「遅すぎる」ということを意味するでしょう。 Expressアプリケーション、ミドルウェア、およびルートを設定する方法の簡潔なバージョンを投稿できますか? – robertklep