首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速箱错误: expressValidator不是一个函数

快速箱错误: expressValidator不是一个函数
EN

Stack Overflow用户
提问于 2019-06-24 09:48:30
回答 8查看 30.4K关注 0票数 13

我正在尝试安装和使用快件-验证器软件包。我已经安装了包版本(6.0.0),然后在我的server.js文件中,代码是:

代码语言:javascript
运行
复制
const bodyParser = require('body-parser')
const expressValidator = require('express-validator')
const express = require('express')
const nunjucks = require('nunjucks')
const sessionInMemory = require('express-session')
const cookieParser = require('cookie-parser')

然后,我在下面列出了几行代码:

代码语言:javascript
运行
复制
const app = express()
const documentationApp = express()
app.use(expressValidator())

当服务器重新加载更改(使用nodemon)时,应用程序崩溃,并说:

TypeError: expressValidator不是函数

我的server.js文件中还有其他一些代码,但我已经删除了其中大部分与我认为无关的代码。

用于 expressValidator:的控制台日志

代码语言:javascript
运行
复制
{ oneOf: [Function: oneOf],
  buildSanitizeFunction: [Function: buildSanitizeFunction],
  sanitize: [Function],
  sanitizeBody: [Function],
  sanitizeCookie: [Function],
  sanitizeParam: [Function],
  sanitizeQuery: [Function],
  buildCheckFunction: [Function: buildCheckFunction],
  check: [Function],
  body: [Function],
  cookie: [Function],
  header: [Function],
  param: [Function],
  query: [Function],
  checkSchema: [Function: checkSchema],
  matchedData: [Function: matchedData],
  validationResult: { [Function] withDefaults: [Function: withDefaults] },
  Result: [Function: Result] }

routes.js文件代码:

代码语言:javascript
运行
复制
router.get('/email-adress', function (req, res) {
  res.render('email-adress', { success: req.session.success, errors: req.session.errors })
  req.session.errors = null
})

router.post('/finished', function (req, res) {
  let email = req.body.email

  req.checkBody('email', 'Email required').isEmail()

  var errors = req.validationErrors()
  if (errors) {
    req.session.errors = errors
    req.session.success = false
    res.redirect('/email-adress')
  } else {
    req.session.success = true
    res.redirect('/finished')
  }
})
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2019-06-24 10:54:00

代码语言:javascript
运行
复制
//just pass the checking as middleware not in the callback
//see here I've just passed an array for checking as middleware
// as the middleware is an array therefore you can add multiple checks in the array
router.post("/", [check('email', "your custom error message").isEmail()], (req, res) => {

  const errors = validationResult(req);
  if (!errors.isEmpty()) {
   res.render('errorPage', { errors: errors.array() });
   //if api caller return res.status(422).json({ errors: errors.array() });
  }
  else{
    //here everything is ok to proceed
   res.render('successPage', { data });
   //to api caller  res.json({msg : "ok"})
  }

})
票数 4
EN

Stack Overflow用户

发布于 2019-12-10 11:56:29

因此,不能以这种方式使用这是一种新的方式来使用快速验证器

天气保持在以前的版本,或者使用它的当前语法。

代码语言:javascript
运行
复制
npm uninstall express-validator
npm install express-validator@5.3.0
票数 28
EN

Stack Overflow用户

发布于 2019-12-04 18:20:34

嗯!就连我也有同样的问题。您可以通过在根文件夹中写入命令来更改版本。

命令:

代码语言:javascript
运行
复制
npm install express-validator@5.3.1 --save-exact
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56733975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档