Часы глотка не испускают объект события
Gulp (4.0) выдает ошибку "Error: Invalid glob argument: undefined"
когда я пытаюсь gulp.src
путь измененного файла, полученный из gulp.watch
, Оба это:
gulp.task('watch', function() {
gulp.watch('./web/**/*.html')
.on('change', function(file) {
gulp.src(file.path)
.pipe(gulp.dest('./output'));
});
});
и этот вариант синтаксиса:
gulp.task('watch', function() {
gulp.watch('./web/**/*.html', function(file) {
gulp.src(file.path)
.pipe(gulp.dest('./output'));
});
});
дать тот же результат.
Ведение файла file.path перед gulp.src
также выводит "undefined".
Воспроизвести:
npm install -g gulp@github:gulpjs/gulp#4.0
и создать gulpfile.js
содержащий:
const gulp = require('gulp');
сопровождаемый любым из примеров.
Насколько я понимаю, именно так путь измененного файла должен быть доступен в соответствии с документами, поэтому я не уверен, в чем я ошибаюсь?
1 ответ
Эта документация является неправильной. Например, это говорит о gaze
события, но gaze
больше не используется для отслеживания изменений файлов в gulp 4.0; он был заменен chokidar
,
Относительно вашей проблемы, документы не правы о том, как вы должны получить доступ к пути к файлу. .on('change')
функция обратного вызова не передана event
объект, так что нет .path
имущество.
Вместо этого путь к файлу передается в виде строки, поэтому ваш первый пример должен выглядеть следующим образом:
gulp.task('watch', function() {
gulp.watch('./web/**/*.html')
.on('change', function(file) {
gulp.src(file)
.pipe(gulp.dest('./output'));
});
});
Функция обратного вызова в вашем втором примере вообще не получает путь. Это прошло done
обратный вызов, чтобы облегчить выполнение задачи через gulp.series()
или же gulp.parallel()
,