colors.jade的内容:
html
body
for color in colors
p color
genHtml.js的内容:
var jade = require('jade');
var colors = ['red', 'blue', 'green'];
var html = jade.renderFile('colors.jade', {globals: [colors] });
console.log(html);
运行node genHtml.js
时,会收到以下错误:
TypeError: colors.jade:3
1| html
2| body
> 3| for color in colors
4| p color
5|
Cannot read property 'length' of undefined
如何使颜色数组可用于jade编译器?
答案 0 :(得分:0)
您已将colors
数组传递到数组中,因此请删除额外的括号,并将globals
键重命名为colors
。同时在=
之前color
输出值。
经过测试和工作:
colors.jade
html
body
for color in colors
p=color
genHtml.js
var jade = require('jade');
var colors = ['red', 'blue', 'green'];
var html = jade.renderFile('colors.jade', { colors: colors });
console.log(html);
标准输出
<html><body><p>red</p><p>blue</p><p>green</p></body></html>
答案 1 :(得分:0)
在这种情况下,jade会重载第二个参数options
以包含locals
。此外,renderFile
不返回html,html在回调中返回。你应该使用:
var jade = require('jade');
var colors = ['red', 'blue', 'green'];
jade.renderFile('colors.jade', { colors: colors }, function(err, html) {
// if err...
console.log(html);
});
(这是未经测试的,但应该有效)