gulp ejs で The following tasks did not complete ejs が出たときの対処法

gulp ejs ジョブで以下のエラーメッセージに遭遇することがあります。

    [21:04:35] The following tasks did not complete: ejs
    [21:04:35] Did you forget to signal async completion?

処理の末端まで実行されたのに、終了したと検知されないことが原因です。

対処方法

明示的に終了を宣言します。

具体的には、コールバック関数を実行します。

    var gulp = require('gulp');
    var ejs = require('gulp-ejs');
    var rename = require('gulp-rename');
    var outdir = "../public/"

    gulp.task('ejs', function(cb) {
        gulp.src(
            [
                '../ejs/*.ejs' //入力ソースパターン&path
                ,'!' + "../../ejs/_*.ejs" //入力除外ソースパターン&path
            ]
        )
            .pipe(ejs())
            .pipe(rename({extname: '.html'})) //出力ファイル名パターン
            .pipe(gulp.dest(outdir)); //出力path

            cb();

    });

このように、

    gulp.task('ejs', function(cb) {

cb()というコールバックを引数にとってタスクを定義します。

タスクの最後で、

    cb();

コールバックを実行します。

こうすることで、

    [21:06:50] Starting 'ejs'...
    [21:06:50] Finished 'ejs' after 28 ms

ちゃんと終了してくれます。

コメント

タイトルとURLをコピーしました