我一直在使用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。 感谢。
答案 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');