当前位置: 首页 > 面试题库 >

Express验证器错误:expressValidator不是函数

郎磊
2023-03-14
问题内容

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

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')

然后往下几行,我输入了以下内容:

const app = express()
const documentationApp = express()
app.use(expressValidator())

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

TypeError:expressValidator不是函数

我的server.js文件中还有其他代码段,但是我去除了大部分与我无关的代码。

expressValidator的控制台日志:

{ 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] }

route.js文件的代码:

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')
  }
})

问题答案:
//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"})
  }

})


 类似资料:
  • 问题内容: 非常奇怪的错误。我使用的是http://developers.facebook.com/docs/authentication/。所以我创建了对fb的请求并传递redirect_uri。我在本地主机上使用测试站点。所以如果我通过 redirect_uri = http://localhost/test_blog/index.php 它工作正常,但如果我通过 redirect_uri =

  • 我正在使用powermock。mockstatic这条线吹,这样我就可以控制它的返回值,因为它唯一的摆动我不必测试它。 但是它会抛出java.lang.VerifyError。我做了很多嘲笑这种事情,没有例外。删除“准备测试”和“运行”有所帮助,但是当我这样做的时候我会失去powermock。我的详细错误也在下面;

  • 我使用teraform-aws-lambda模块和terraform-aws-iam模块,下面是这些例子,但是我得到了验证异常错误(输出如下) https://github.com/terraform-aws-modules/terraform-aws-lambda/tree/master/examples/simplehttps://github.com/terraform-aws-module

  • 我得到了一个错误:这个$情态动词模态不是一个函数 我通过gulp文件从wwwroot文件夹中的Node_模块获得了ng2-bs3-modal。 我的文件夹结构是: 如果我将ng2-bs3-modal移动到脚本(typescript)文件夹,它将提供jasmin区域。js错误。在上面的结构中,我得到了“this.$modal.modal不是函数”错误,因为ng2-bs3-modal中的所有类型脚本都

  • 问题内容: 我正在尝试编写示例AngularJS和SpringMVC项目。spring方法可以正常工作,但是我的站点控制器中的函数声明存在问题。我的应用应该从文本输入中返回一个单词,但是当我单击按钮时,出现了以下错误: 这是我的index.html: 和controller.js: 我注意到,这一定是ng-click值中的函数声明存在某种问题。在现场启动时,controler.js可以正常运行,但

  • 问题内容: 我已经建立了一个工厂来处理我的控制器的功能,但是不知何故,控制器会在其中一个功能上返回错误: 错误:Auth.getUser(…)。成功不是函数@ http:// localhost:8080 / app / controllers / mainCtrl.js:10:1 … 我不知道这是怎么回事,其余功能似乎工作正常? 主控制器: 问题答案: 请参阅$ http服务文档中的 “ 弃用声