类型错误:无法使用快速验证器设置未定义的属性“消息”

问题描述

我正在尝试使用快速验证器和 ejs 方法设置数组验证,但我不断收到错误消息

C:\Users\ADLIMITED\Desktop\favourite\node_modules\express-validator\src\chain\validators-impl.js:25
        this.lastValidator.message = message;
                                   ^
TypeError: Cannot set property 'message' of undefined
    at ValidatorsImpl.withMessage (C:\Users\ADLIMITED\Desktop\favourite\node_modules\express-validator\src\chain\validators-impl.js:25:36)
    at module.exports (C:\Users\ADLIMITED\Desktop\favourite\routes\index.js:35:33)

这是包含验证方法的数组:

router.post(
    '/contact',[
      check('name').trim().isLength({ min: 3 }).escape().withMessage('A name is required'),check('email').trim().isEmail().normalizeEmail().withMessage('A valid email is required'),check('service').escape().withMessage('Select a service'),check('budget').escape().withMessage('Choose a budget'),check('message').trim().isLength({ min: 3 }).escape().withMessage('Leave us a message'),],(req,res) => {
      const errors = validationResult(req);
      if (!errors.isEmpty()) {
        req.session.FeedbackContact = {
          errors: errors.array(),};
        return res.redirect('/contact');
      }
      console.log(req.body);
      return res.send('Feedback form posted');
    }
  );

以及包含要验证的详细信息以及错误消息的 html 页面

<div class="container-content100">
  <div class="content-wrapper100">
    <% if(locals.errors) {%>
    <div class="alert alert-danger">
      <% errors.forEach(function(error){ %>
      <li><% error.msg %></li>
      <% }) %>
    </div>
    <% } %>

    <form class="" method="POST" action="/contact">

请帮忙

解决方法

我发现我的错误是将 .withMessage 分配给选项输入,而 ejs 页面的目的是在列表元素中包含分配符号,否则消息不会显示。 正确的代码如下所示:

包含验证方法的数组:

'/contact',[
      check('name').trim().isLength({ min: 3 }).escape().withMessage('A name is required'),check('email').trim().isEmail().normalizeEmail().withMessage('A valid email is required'),check('service').escape(),check('budget').escape(),check('message').trim().isLength({ min: 3 }).escape().withMessage('Leave us a message'),],

包含要验证的详细信息以及错误消息的 html 页面

<div class="container-content100">
  <div class="content-wrapper100">
    <% if(locals.errors) {%>
    <div class="alert alert-danger">
      <% errors.forEach(function(error){ %>
      <li><%= error.msg %></li>
      <% }) %>
    </div>
    <% } %>

    <form class="" method="POST" action="/contact">