1

この質問へのコメントで示唆されているように、「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)
    {

...

4

1 に答える 1

7

使用法を見ると、はexpressValidatorミドルウェア関数を返す関数なので、明示的に呼び出す必要があります。

app.use(expressValidator());
于 2013-06-29T19:19:41.257 に答える