我正在处理联系表单,并使用express-validator进行验证。我正在尝试处理错误,这是到目前为止我的app.js文件中的代码(相关代码段):
// CREATE (POST) ROUTE - add new prospect to the DB
app.post('/contact', [
check('firstName', 'Please enter at least one letter').not().isEmpty().trim().escape(),
check('lastName', 'Please enter at least one letter').not().isEmpty().trim().escape(),
check('emailAddress', 'Please enter a valid email address').isEmail().normalizeEmail(),
check('message', 'Please enter at least one letter').not().isEmpty().trim().escape()
], (req, res) => {
// GET AND SANITIZE DATA
var firstname = req.sanitize(req.body.firstName);
var lastname = req.sanitize(req.body.lastName);
var emailaddress = req.sanitize(req.body.emailAddress);
var message = req.sanitize(req.body.message);
var newProspect = { firstName: firstname, lastName: lastname, emailAddress: emailaddress, phoneNumber: phonenumber, message: message };
// HANDLE FORM VALIDATION ERRORS
const errors = validationResult(req);
if(!errors.isEmpty()) {
console.log(errors.array());
return res.status(422).render('contact-form', {
errorMessage: errors.array()[0].msg
});
}
要将错误输出到浏览器,我在contact-form.ejs文件中的实际表格div上方有以下内容:
<% if(errorMessage) { %>
<div class="user-message user-message--error"><%= errorMessage %></div>
<% } %>
当我为联系表单加载路线时,出现以下错误:
ReferenceError: /home/ubuntu/workspace/views/contact-form.ejs:13
11|<p class="lead">Fill out the form below and we will respond as soon as possible.
12|</p>
>> 13|<% if(errorMessage) { %>
14|<div class="user-message user-message--error"><%= errorMessage %></div>
15|<% } %>
16|<div class="form">
errorMessage is not defined
我知道我在这里遗漏了一些东西,但是由于我的经验不足,对我来说到底是什么并不明显。
也许可以更好地提出这个问题,有效而成功地在我的contact-form.ejs模板中使用来自app.js的'errorMessage'变量有什么收获,以免出现“未定义”错误?
答案 0 :(得分:0)
我认为您可能遇到范围问题。 errorMessage
变量在哪里声明?引用的代码没有显示该位置,或者在!errors.isEmpty
控制结构中隐式声明了该位置,在这种情况下,它对全局作用域不可用,并且稍后调用的errorMessage
变量确实是没有定义的。
我无法测试您所包含的代码,但是在过去遇到过类似的问题后,我倾向于发现范围是问题所在。希望它也在这里,您可以继续寻求解决方案。如果不是,请再次发布,我们将尝试另一种外观:)。
HTH-菲利普(Philippe)