使用pug-html-loader将数据传递给pug(无法读取undefined的属性)

时间:2017-05-31 08:10:01

标签: javascript node.js webpack pug webpack-html-loader

根据pug-html-loader的自述文件,加载程序接受data对象,该对象作为options的一部分传递给模板。虽然options中的 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 } } 无法使用,但我发现(pug API reference)的grunt插件以相同的方式使用API​​。

我已为加载程序指定了以下选项:

title= data.title

根据grunt-contrib-pug

,我希望按以下方式访问
ERROR in   Error: Child compilation failed:
  Module build failed: TypeError: Cannot read property 'title' of undefined

但是,编译时我总是遇到以下错误:

-
  console.log(' DATA! ' + data);

出于调试目的,我在模板中包含以下行:

DATA! undefined

结果是:

df = pd.DataFrame([['low', 0.5, 123, 0.8, 123], 
                   ['high', 0.7, 253, 0.9, 147]], 
                  columns=['type', 'g1 v0', 'g1 v1', 'g2 v0',  'g2 v1'])

我还通过声明一些乱码而不是一个对象(例如一个字符串,普通的json,一个数字......)来确保数据正确传递给哈巴狗,然后pug编译器抱怨数据是不是有效格式等。

任何人都面临同样的问题?

1 个答案:

答案 0 :(得分:2)

您应该直接引用数据(即不使用data <)前缀字段

所以你应该改变你的代码:

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

然后从您的PUG模板中引用它

doctype html
html
  head
    title= hello