Работа с NodeJS, Gulp, Jade: как я могу использовать локальные файлы в моих файлах .jade? - PullRequest
0 голосов
/ 14 ноября 2018

Итак, я пытаюсь создать более или менее простое веб-приложение с NodeJS, Express, Gulp и Jade для шаблонизации впервые. Сначала я не планировал использовать Gulp, но после написания всех основных функций я купил шаблон, который шел с Gulp. Без Gulp все работало нормально, но я не могу понять, как заставить это работать с Gulp.

Так вот моя проблема:

Когда я пытаюсь создать свои html-файлы с помощью gulp / gulp-jade, я получаю следующую ошибку:

TypeError: /Users/root1/doordeals-be/views/admin-coupon-overview.jade:4
2|
3| block content
4|     h1 #{coupon.title}

Cannot read property 'title' of undefined

Вот как coupon передается в нефрит в моем экспресс-маршруте:

router.get('/:couponId', function(req, res, next) {
  Coupon.findById(req.params.couponId).populate('dispatch region').exec(function(err, coupon) {
    if(err) {
        return next(err);
    } else {
        res.render('admin-coupon-overview', {coupon: coupon});
    }
  });
});

Вот мой файл глотка:

gulp.task('serve', ['sass', 'templates'], function () {
browserSync.init({
    port: 3000,
    server: "./",
    index: './views/html/index.html',
    ghostMode: false,
    notify: false
});

gulp.watch('./src/assets/scss/**/*.scss', ['sass']);
gulp.watch('./src/**').on('change', browserSync.reload);

});

gulp.task('templates', function() {
  var YOUR_LOCALS = {};

gulp.src('./views/*.jade')
    .pipe(jade({
  locals: YOUR_LOCALS
  }))
  .pipe(gulp.dest('./views/html'))
});

Вот и все. Таким образом, проблема в том, что coupon определяется, когда кто-то отправляет запрос GET на /:couponId (поэтому он должен посетить http://my.link.com/SOME-ID), но Gulp пытается создать все файлы HTML, как только сервер запускается.

Кто-нибудь знает, как решить эту проблему?

Заранее спасибо.

...