Согласно 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
Я также гарантировал, что данные правильно передаются в мопс, объявляя какую-то тарабарщину вместо объекта (например, строку, простой json, число...), тогда компилятор мошенников жалуется, что данные не в допустимом формате и т.д.,
Кто-нибудь сталкивается с той же проблемой?
Вы должны ссылаться на директиву данных (то есть без префикса полей с data
)
Поэтому вы должны изменить свой код так:
{
loader: 'pug-html-loader',
options: {
data: {
title: 'Hello World'
}
}
}
И затем ссылайтесь на него со своего шаблона PUG.
doctype html
html
head
title= hello