使用路由 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');
我一直在使用 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');