使用路线V4在快速验证器上未定义检查

时间:2017-10-01 19:04:06

标签: node.js express express-validator

我一直在使用expressjs开发应用程序,但在使用express-validator V4时出现错误。错误是: TypeError: check is not a function

所以我的代码看起来像这样:

//users.js
var check  = require('express-validator/check');
var validationResult = require('express-validator/check');

router.post('/register',[
    check('name').exists()
], function(req, res){
    var errors = validationResult(req);
    if(errors){
        console.log('There are errors');
    }else{
        console.log('No errors');
    };
});

module.exports = function(app){
    app.use('/users', router);
};

请注意,我使用的是纯JavaScript,没有ES6。 感谢。

3 个答案:

答案 0 :(得分:1)

express-validator包含ES6,它支持节点6+ 正如您在评论中所述,您使用的是Node 8.4.0,那么您就可以很好地使用它。

您导致错误导入函数,因为您必须绑定默认导出中的函数。或者使用解构,这是一个很酷的:

const { check, validationResult } = require('express-validator/check');

// or:

const check = require('express-validator/check').check;
const validationResult = require('express-validator/check').validationResult;

另外,请记得检查usage section:)

答案 1 :(得分:0)

app.use(expressValidator())的语法是express-validator的旧语法。有关详细信息,请参见https://express-validator.github.io/docs/legacy-api.html

建议您将代码和语法升级到较新的版本,其中check本身就是中间件(example),而不是req的成员函数。 / p>

但是,如果您不想重写代码的整个验证器部分,那么您所需要做的就是在package.json中将express-validator的版本设置为express-validator:~3(而不是^6...),然后执行npm i。那应该解决它。

答案 2 :(得分:0)

尝试从您的require语句中删除“ / check”部分

var check  = require('express-validator');
var validationResult = require('express-validator');