gulp-jade报告错误,如'无法读取属性'xxx'of undefined'

时间:2015-10-16 07:19:16

标签: node.js gulp pug

当我使用gulp-jade@1.1.0编译“index.jade”

<!DOCTYPE html>
html(lang="en")
head
    meta(charset="UTF-8")
    title Document
body
    - var json = {'foo': 'bar'}
    include template

包括“template.jade”

h1= json.foo

gulp-jade总是报告错误,如

[15:11:34] Starting 'jade'...
[15:11:34] Starting 'sass'...
[15:11:34] Finished 'sass' after 2.68 ms
[15:11:34] Plumber found unhandled error:
 TypeError in plugin 'gulp-jade'
Message:
    C:\Users\Administrator\Desktop\workspace\node\src\jade\template.jade:1
  > 1| h1= json.foo

Cannot read property 'foo' of undefined
Details:
    path: C:\Users\Administrator\Desktop\workspace\node\src\jade\template.jade
[15:11:34] Finished 'jade' after 19 ms

但编译后的html文件是正确的

<!DOCTYPE html>
<html lang="en"></html>
<head>
  <meta charset="UTF-8"/>
  <title>Document</title>
</head>
<body>
  <h1>bar</h1>
</body>

我的gulpfile就是这样写的

gulp.task('jade', function(){
    return gulp.src('src/jade/*.jade')
        .pipe(plumber())
        .pipe(gulpJade({
            jade: jade,
            pretty: true
        }))
        .pipe(gulp.dest('build/html'))
        .pipe(connect.reload());
});

1 个答案:

答案 0 :(得分:0)

Gulp试图单独编译每个模板。

您必须仅指定入口点( index.jade ):

gulp.task('jade', function(){
    return gulp.src('src/jade/index.jade')
        .pipe(plumber())
        .pipe(gulpJade({
            jade: jade,
            pretty: true
        }))
        .pipe(gulp.dest('build/html'))
        .pipe(connect.reload());
});

或从 gulp.src 中排除 template.jade