Сервер арфы, Jade и JSON Loop, ошибка: невозможно прочитать свойство "length" из неопределенного

Это файл nav.jade

each link in data
h5.home-link: a(href="#{ url }")

Это мой файл data.json

{
      "links": [
        { "url": "index.html", "pg-title": "Home" },
        { "url": "Wooden_Wall_Panelling.html", "pg-title": "Wooden Wall Panelling" },
        { "url": "Wooden_Partitioning.html", "pg-title": "Wooden Partitioning" },
        { "url": "Wardrobe_MDF_Shutters.html", "pg-title": "Wardrobe MDF Shutters" },
        { "url": "MDF_Ceiling_Patterns.html", "pg-title": "MDF Ceiling Patterns" },
        { "url": "Wooden_Grills.html", "pg-title": "Wooden Grills" }
     ]
}

Ошибка (пока Jade пытается скомпилировать файл):

Невозможно прочитать свойство 'длина' из неопределенного.

Ошибка указана в первой строке, т.е. каждая ссылка в данных.

Что я здесь не так делаю?

Я использую Harp Server.

1 ответ

Решение

Во-первых, убедитесь, что это _data.json файл с подчеркиванием впереди. Тогда ваш nav.jade файл должен выглядеть так:

each link in public._data.links
  h5.home-link: a(href="#{ link.url }") #{ link["pg-title"] }

Если вы измените свой pg-title в title в вашем _data.json файл, вы также можете сделать синтаксис немного чище:

each link in public._data.links
  h5.home-link: a(href="#{ link.url }") #{ link.title }

Вы также можете отказаться от интерполяции строк, если хотите:

each link in public._data.links
  h5.home-link: a(href=link.url)= link.title

Здесь также есть больше информации о метаданных в Арфе. Если вы отлаживаете и хотите увидеть, как все ваши метаданные доступны в Harp, вам может быть полезно временно отобразить всю общедоступную _data объект:

pre: code= JSON.stringify(public._data, 0, 2)
Другие вопросы по тегам