AntonEssential
@AntonEssential

Почему появлятеся ReferenceError: _ is not defined?

Добрый день, получаю ReferenceError: _ is not defined, кто знает в чем проблема?
Настраивал по данной статье.

/**
 * Нормализация пути
 *
 * В файле путь до другого файла может иметь вид `sidebar` или `partials/header`
 * поэтому каждый путь должен быть обработан.
 *
 * Эта функция добавляет к пути контекст или, проще говоря родительскую директорию.
 */
function normalizePath(filepath, context) {
  if (context) {
    return path.join(context, filepath).replace(/\\/g, '/');
  }

  return filepath;
}

/**
 * Получение путей
 *
 * С помощью регулярного выражения, забираем из файла все пути из конструкций
 * extends и include.
 */
function getPaths(source) {
  const match = source.match(/^\s*(include|extends)\s(.*)/gm);

  if (match) {
    return match.map((match) => match.replace(/\s*(include|extends)./g, '') + '.pug');
  }

  return null;
}

/**
 * Получение всех страниц из директории `app/templates`
 */
function getPages() {
  return fs.readdirSync('app/templates').filter((filepath) => /pug$/.test(filepath));
}

/**
 * Чтение файла
 */
function getPage(name) {
  const filepath = path.join('app/templates', name);

  try {
    return fs.readFileSync(filepath).toString();
  } catch (err) {
    return false;
  }
}

/**
 * Вычисление древа зависимостей
 * 
 * Функция рекурсивно проходит по всем зависимостям и заносит их в массив.
 */
function calculateTree(target, context, tree) {
  const page = getPage(target);
  if (!page) {
    return tree;
  }

  let paths = getPaths(page);

  if (!paths) {
    return tree;
  }

  paths = paths.map((filepath) => normalizePath(filepath, path.dirname(target)));
  paths.forEach((filepath) => {
    tree = calculateTree(filepath, path.dirname(target), tree);
  });

  return tree.concat(paths);
}

/**
 * Получение зависимостей для каждой из страниц
 */
function getPathsTree() {
  const cacheTree = {};
  getPages().forEach((page) => {
    cacheTree[page] = calculateTree(page, null, [page]);
  });

  return cacheTree;
}

module.exports.getPathsTree = getPathsTree;


Далее pug таск

gulp.task('pug', function() {
  // Получаем древо зависимостей для каждой страницы
  const pathsTree = _.getPathsTree();

  return gulp.src('app/templates/*.pug')
    // Фильтруем файлы в потоке
    .pipe($.filter((file) => {
      // Если не запущен режим слежения за изменением файлов, то пропускаем в поток
      // все страницы
      if (!global.watch) {
        return true;
      }

      // Если имя изменившегося файла есть в зависимостях страницы, то пропускаем
      // страницу дальше в поток, попутно выводя сообщение в консоль для контроля
      const changed = global.changedTplFile;
      if (pathsTree[file.relative].includes(changed)) {
        console.log($.chalk.green('>> ') + `Compiling: ${file.relative}`);
        return true;
      }

      // Иначе отбрасываем страницу
      return false;
    }))
    .pipe($.pug())
    .pipe(gulp.dest('build'));
});


Далее watch таск:

// Watch task
gulp.task('watch', () => {
    // Shows that run "watch" mode
    global.watch = true;


    // Modules pug
    $.watch(['app/templates/*.pug'], gulp.series('pug'))
    
    // Обработчик изменения любого из файлов в директории `app/templates`, включая события
    // удаления или создания файлов, а также директорий
    .on('all', (event, path) => {
      // Получаем имя файла и записываем его в глобальную переменную
      global.changedTplFile = path.replace(/[\\\/]/g, '/').replace(/app\/templates\//, '');
    });


При запуске gulp pug получаю ReferenceError: _ is not defined
  • Вопрос задан
  • 1734 просмотра
Пригласить эксперта
Ответы на вопрос 1
movasyl
@movasyl
semper tiro
Там, насколько я помню, автор создавал свой бройлерплейт для быстрого старта - yellfy. Разверни у себя на машине и скопируй.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы