使用pug-html-loader将数据传递给帕格(不能读取未定义的属性)

根据pug-html-loader的readme, 加载器接受一个data对象,这个data对象被作为options一部分传递给模板。 虽然帕格API参考中的options不可用,但是我发现的一个grunt插件( grunt-contrib-pug )以相同的方式使用API​​。

我为loader指定了以下选项:

  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 

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

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

其结果是:

 DATA! undefined 

我也确保通过声明一些乱码而不是一个对象(例如一个string,纯JSON,一个数字)正确地传递给帕格的数据,然后帕格编译器抱怨数据不是有效的格式等。

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

你应该引用数据directy(即没有前缀字段的data

所以你应该像这样改变你的代码:

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

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

 doctype html html head title= hello