Передать данные в pug с помощью pug-html-loader (не может прочитать свойство undefined)

1

Согласно 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, число...), тогда компилятор мошенников жалуется, что данные не в допустимом формате и т.д.,

Кто-нибудь сталкивается с той же проблемой?

Теги:
webpack
pug

1 ответ

1
Лучший ответ

Вы должны ссылаться на директиву данных (то есть без префикса полей с data)

Поэтому вы должны изменить свой код так:

{
  loader: 'pug-html-loader',
  options: {
    data: {
      title: 'Hello World'
    }
  }
}

И затем ссылайтесь на него со своего шаблона PUG.

doctype html
html
  head
    title= hello

Ещё вопросы

Сообщество Overcoder
Наверх
Меню