我跑这个
mixin eventpics(pics)
.eventpics
each p in pics
.col-xs-4
img.img-responsive(src=p)
- var event_pics = ['a', 'b']
+eventpics(event_pics)
jade demo page上的并且它工作正常,但是当我尝试使用jade命令行工具输出html时出现此错误
TypeError: jade/myfile.jade:12
10| mixin eventpics(pics)
11| .eventpics
> 12| each p in pics
13| .col-xs-4
14| img.img-responsive(src=p)
15|
Cannot read property 'length' of undefined
at Object.eval (eval at <anonymous> (/usr/local/lib/node_modules/jade/lib/index.js:190:8), <anonymous>:20:31)
at Object.jade_mixins.eventpics (eval at <anonymous> (/usr/local/lib/node_modules/jade/lib/index.js:190:8), <anonymous>:57:4)
at eval (eval at <anonymous> (/usr/local/lib/node_modules/jade/lib/index.js:190:8), <anonymous>:666:25)
at eval (eval at <anonymous> (/usr/local/lib/node_modules/jade/lib/index.js:190:8), <anonymous>:1937:22)
at res (/usr/local/lib/node_modules/jade/lib/index.js:191:38)
at /usr/local/lib/node_modules/jade/bin/jade.js:190:48
at /usr/local/lib/node_modules/jade/node_modules/mkdirp/index.js:47:26
at Object.oncomplete (fs.js:107:15)
答案 0 :(得分:0)
所以我想出了这个问题。我没有在示例中包含我的所有代码,事实证明我应该有。我正在扩展layout.jade文件,我已经定义了扩展它的文件中的所有- var foo = bar
。这使得它们在layout.jade文件中未定义,除非我在layout.jade中定义了一个块block vars
,然后将该块中的变量放在扩展它的文件中。
解决方案看起来像这样:
layout.jade
block vars
block content
extending.jade
extends layout
mixin eventpics(pics)
.eventpics
each p in pics
.col-xs-4
img.img-responsive(src=p)
block vars
- var event_pics = ['a', 'b']
block content
+eventpics(event_pics)