使用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