Переменная ошибки проверки экспресс-валидатора, выдающая "неопределенную" ошибку при загрузке страницы
Я работаю над формой контакта и использую экспресс-валидатор для валидации. Я пытаюсь обработать ошибки, и это мой код в файле 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
Я знаю, что что-то здесь упускаю, но, по признанию моей неопытности, для меня просто не так очевидно, что именно.
Может быть, лучше задать вопрос: в чем заключается ловкость эффективного и успешного использования переменной 'errorMessage' из моего app.js в моем шаблоне contact-form.ejs, чтобы я не получил ошибку 'undefined'?
1 ответ
Я думаю, что у вас может быть проблема с объемом. Где errorMessage
переменная объявлена? Либо ваш цитируемый код не показывает, где это находится, либо он неявно объявлен внутри !errors.isEmpty
структура управления, в этом случае она не доступна для глобальной области и errorMessage
Переменная, которую вы вызываете позже, действительно не определена.
Я не могу протестировать с кодом, который вы включили, но, сталкиваясь с подобными проблемами в прошлом, я обнаружил, что проблема заключалась в этом. Надеюсь, это тоже здесь, и вы можете быть на пути к решению. Если нет, отправьте сообщение снова, и мы попробуем еще раз посмотреть:).
HTH - Филипп