EJS «itemTitle» не определен

#node.js #express #ejs

#node.js #выразить #ejs

Вопрос:

  ```<div class="box" id="heading">
    <h1><%= itemTitle %></h1>
     </div> 
       <div class="box">
         <% newListItems.forEach((item)=>{%>
           <form action="/delete" method="POST">
             <div class="item">
                <input type="checkbox"
                    name="checkbox"
                    value="<%= item._id %>"
                    onchange="this.form.submit()"
                />
                <p><%= item.name %></p>
            </div>
          </form>

         <%})%>```

  ```app.get("/", function (req, res) {
      Item.find((err, items) => {
        if (err) {
         console.log(err);
      } else {
        res.render("list", { itemTitle: "Booyah", newListItems: 
        items });
         }
       });
     }); ```
     ```ReferenceError: /Users/apple/Documents/todolist-v2-starting- 
        files/views/list.ejs:4
        2| 
        3| <div class="box" id="heading">
     >> 4|   <h1><%= itemTitle %></h1>
        5| </div>
        6| 
        7| <div class="box">

     itemTitle is not defined```
 

Это работает, но я продолжаю получать последний код в своей консоли. но когда я вынимаю «itemTitle», он работает с newListItems без ошибок. Это заставляет меня добавлять больше контекста, но, если серьезно, я знаю, что еще добавить. Я новичок, и я взломал кучу разных вариантов, чтобы заставить его работать, парень из discord не смог помочь. Спасибо, что проверили это.

Комментарии:

1. codepen.io/drake-ashmond-coleman/pen/VwjEdaX

2. В этом codepen вы не переходите itemTitle к шаблону, а title вместо этого. Это опечатка?

3. никакой опечатки, только с того момента, как я опубликовал этот вопрос, я пробовал разные попытки. Предположим, что данные передаются, совпадают и работают, но ошибка сохраняется

4. Есть ли шанс, что вы можете поделиться своим кодом, например, через github? Я пока не смог воспроизвести это.

5. да, конечно. дайте мне одну секунду, чтобы настроить его

Ответ №1:

Я клонировал ваш репозиторий, и пока он работает нормально. Единственное, что приходит на ум, это когда вы запрашиваете определенный список через app.get("/:customListName") {...} . Там вы не передаете a title шаблону, и, очевидно, это приведет ejs к сбою рендеринга шаблона:

 if (!foundList) {
        // ...
         res.render("list"  foundList.name   "", {
           newListItems: foundList.items,
         });
      } else {
        res.render("list", { newListItems: foundList.items });
      }
 

Поэтому вы должны исправить это на что-то вроде (еще лучше было бы отобразить шаблон для «Список не найден»):

 if (!foundList) {
        // ...
        res.render("list", {title: 'Custom List', newListItems: []});
      } else {
        res.render("list", {title: 'Custom List', newListItems: []});
      }
 

Комментарии:

1. @Drake: я могу создать запрос на извлечение, если хотите, просто дайте мне знать.

2. Был бы признателен за обратную связь — какие-либо обновления?