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

Check is not defined on express-validator using routes V4

我一直在使用 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。 谢谢

express-validator 拥抱 ES6,支持 Node 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 :)

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

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

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

尝试从你的 require 语句中删除“/check”部分以获得

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