Моя переменная errors в шаблоне ejs вызывает ошибку undefined при загрузке страницы
У меня есть шаблон ejs для контактной формы с кодом для вывода ошибок через флэш-сообщения на страницу, когда форма не заполнена должным образом или полностью.
<%- messages('message', locals) %>
<% if (errors !== undefined) { %>
// Output the errors to the page
<% errors.forEach(function(error) { %>
<div class = "alert alert-danger">
<%= error.message %>
</div>
<% }) %>
<% } %>
Код в моем файле app.js создает переменную error.
let errors = req.validationResult();
if (errors) {
res.render('contact-form', {
errors: errors
});
Как бы то ни было, шаблон messages.ejs содержит следующий код:
<div id = "messages">
<% Object.keys(messages).forEach(function (type) { %>
<div class = "alert alert-<%= type %>">
<% messages[type].forEach(function (message) { %>
<p><%= message %></p>
<% }) %>
</div>
<% }) %>
</div>
Линия:
<% if (errors !== undefined) { %>
из шаблона contact-form.ejs выдает ошибку "error is not defined".



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я предполагаю, что "неопределенная ошибка" относится к errors.forEach. Результатом validationResult() является не массив ошибок, это объект с геттерами, такими как isEmpty() и array(), поэтому вам может потребоваться немного изменить код вашего контроллера.
Посмотрите документы для некоторых примеров.
См. Правку выше, чтобы пояснить строку, которая выдает ошибку «error is not defined».
Возможный дубликат Как правильно проверить наличие переменной в шаблоне EJS (с помощью ExpressJS)?