この質問へのコメントで示唆されているように、「express-validator」を含めてロードを完了していないアプリケーション。明らかに、定義、使用、または呼び出しの場所が正しくありません。
これは私の app.js の一部です。すべての提案に感謝します。
var express = require('express')
, expressValidator = require('express-validator')
, routes = require('./routes')
, http = require('http')
, path = require('path');
...
var app = express();
app.set('port', process.env.PORT || port);
app.set('views', __dirname + '/views');
app.engine('.html', require('ejs').renderFile);
app.set('view engine', 'html');
app.use(express.logger('dev'));
app.use(express.bodyParser());
// The problem
app.use(expressValidator);
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.cookieParser());
app.use(express.session({ secret: 'keyboard test' }));
app.use(function(req, res, next){
var err = req.session.error
, msg = req.session.success;
delete req.session.error;
delete req.session.success;
res.locals.message = '';
if (err) res.locals.message = '<p class="msg error">' + err + '</p>';
if (msg) res.locals.message = '<p class="msg success">' + msg + '</p>';
next();
});
app.use(app.router);
...
app.post('/login', function(req, res){
req.assert('email', 'Range email').len(6, 40);
req.assert('password', 'Range password').len(6, 20);
var errors = req.onValidationError();
if(errors.length == 0)
{
...