玉在本地机器上造成错误,但在演示网站上没有

时间:2015-02-03 06:59:07

标签: pug

我跑这个

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)

1 个答案:

答案 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)