如何纠正错误作为没有方法'onValidationError'validation的node.js?

我有registry单,并将值发布到注册函数,在那里它将validation与节点validation器的表单值。

但是,当我尝试使用节点validation器,它不断得到错误TypeError:Object#没有方法'onValidationError' 。 validation器已经安装在我的应用程序。

app.js中

app.post('/register', test.register); 

test.js中

 var check = require('validator').check, sanitize = require('validator').sanitize; exports.register = function(req, res){ var errors = []; req.onValidationError(function(msg) { //res.render('signup', { error: msg }); errors.push(msg); }); req.check(req.body.email, 'Please enter a valid email').len(6,64).isEmail(); req.check(req.body.username, "Username can't be empty!").isNull(); if (errors.length) return res.render( 'register', { regErr: errors.join('\n') } ); } 

如何纠正这个错误?

您正在使用node-validator 。 您应该为onValidationError使用express-validator

从节点validation器页面可以看到:

如果您使用express.js框架,则可以使用express-validator中间件来无缝地集成节点validation器。

 Example http://localhost:8080/?zip=12345&foo=1&textarea=large_string get('/', function (req, res) { req.onValidationError(function (msg) { //Redirect the user with error 'msg' }); 

附加说明: app.use的顺序也很重要。 尝试移动app.use(expressValidator); app.use(app.router); 。 您可以在https://github.com/justin-john/node-user-management/blob/master/app.js#L17-L18查看app.use的顺序。