Передать данные в pug с помощью pug-html-loader (не может прочитать свойство undefined)
Согласно readme из pug-html-loader, загрузчик принимает data
объект, который передается как часть options
к шаблону. Пока недоступно на options
в справочнике API pug найденный мной плагин grunt ( grunt-contrib-pug) использует API таким же образом.
Я указал следующие параметры для загрузчика:
loader: 'pug-html-loader',
options: {
pretty: true,
exports: false,
debug: !env.production,
compileDebug: !env.production,
cache: config.build.useCaching,
doctype: 'html',
data: {
title: config.metadata.title,
baseUrl: config.build.baseUrl,
server: env.server,
metadata: config.metadata
}
}
К которому я хотел бы получить доступ следующим образом, согласно этому вопросу:
title= data.title
Тем не менее, я всегда сталкиваюсь со следующей ошибкой при компиляции:
ERROR in Error: Child compilation failed:
Module build failed: TypeError: Cannot read property 'title' of undefined
В целях отладки я включил в шаблон следующую строку:
-
console.log(' DATA! ' + data);
Что приводит к:
DATA! undefined
Я также удостоверился, что данные правильно передаются в pug, объявив некоторые тарабарщины вместо объекта (например, строку, обычный json, число...), затем компилятор pug жалуется, что данные не в правильном формате и т. Д.,
Кто-нибудь сталкивается с той же проблемой?
1 ответ
Вы должны ссылаться на данные напрямую (т.е. без префикса полей с data
)
Поэтому вы должны изменить свой код следующим образом:
{
loader: 'pug-html-loader',
options: {
data: {
title: 'Hello World'
}
}
}
А затем сослаться на это из вашего шаблона PUG
doctype html
html
head
title= hello