1. 程式人生 > 實用技巧 >gulp 3.0 & 4.0 | watch task has to be a function問題

gulp 3.0 & 4.0 | watch task has to be a function問題

gulpfile.js

gulp.task('watch', function () {
    gulp.watch('./css/*.css',['css']);
    gulp.watch('./html/*.html',['html']);
    gulp.watch('./image/*.*',['image']);
    gulp.watch('./js/*.cjs',['js']);
});

報錯:

[14:18:45] Error: watching css/*.css: watch task has to be a function (optionally generated by using gulp.parallel or gulp.series)
    at Gulp.watch (/Users/mac/Desktop/my_project/node_modules/gulp/index.js:31:11)
    at /Users/mac/Desktop/my_project/gulpfile.js:48:10
    at taskWrapper (/Users/mac/Desktop/my_project/node_modules/undertaker/lib/set-task.js:13:15)
    at bound (domain.js:425:14)
    at runBound (domain.js:438:12)
    at asyncRunner (/Users/mac/Desktop/my_project/node_modules/async-done/index.js:55:18)
    at processTicksAndRejections (internal/process/task_queues.js:79:9)

分析:

這個是由於require引入的包的版本問題導致的。在不同的版本里,介面引數發生了變化。在gulp4.0之後已經只能接受watch第二個引數必須為函式。詳情請看官網

方法一:

改版本<4.0

方法二:

gulp.task('watch', function () {
    gulp.watch('./css/*.css',gulp.series(['css']));
    gulp.watch('./html/*.html',gulp.series(['html']));
    gulp.watch('./image/*.*',gulp.series(['image'])]);
    gulp.watch(
'./js/*.cjs',gulp.series(['js'])); });

gulp.task('watch', function () {
    gulp.watch('./css/*.css',gulp.parallel(['css']));
    gulp.watch('./html/*.html',gulp.parallel(['html']));
    gulp.watch('./image/*.*',gulp.parallel(['image'])]);
    gulp.watch('./js/*.cjs',gulp.parallel(['js']));
});