2016-09-12 2 views
1

gulp.srcgulp.watch에서 얻은 경로를 Gulp (4.0)가 "Error: Invalid glob argument: undefined"으로 던집니다. 모두이 :Gulp 시계가 이벤트 객체를 표시하지 않습니다.

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')); 
    }); 
}); 

는 동일한 결과를 얻을 수 있습니다.

gulp.src 앞에 file.path를 로깅하면 "정의되지 않음"도 출력됩니다.

은 재현 :

npm install -g [email protected]:gulpjs/gulp#4.0

및 함유 gulpfile.js 생성 :

const gulp = require('gulp');

의 예제 중 하나 하였다.

변경된 파일의 경로에 as per the docs에 액세스 할 수 있어야한다는 점을 이해합니다. 그래서 어디서 잘못 될지 잘 모르겠습니다.

답변

1

그 문서는 모든 종류의 문제입니다. 예를 들어 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')); 
     }); 
}); 

두 번째 예에서 콜백 함수에서 모든 경로를받지 않습니다 : 첫 번째 예는 다음과 같아야하므로

대신 파일 경로는 문자열로 전달됩니다. gulp.series() 또는 gulp.parallel()을 통해 작업 실행을 용이하게하기 위해 done 콜백을 전달합니다.

+0

Vielen Dank! 그것은 정말로 문제입니다. 설명 할 시간을내어 주셔서 감사합니다. 희망적으로 이것은 동일한 두통을 가진 다른 사람들을위한 자원으로 작용합니다. –

관련 문제