LoginSignup
17
6

More than 3 years have passed since last update.

gulpにて”Did you forget to signal async completion?”

Posted at

エラー内容

$ gulp sass
[11:24:34] Using gulpfile ~/Desktop/blogtest/gulpfile.js
[11:24:34] Starting 'sass'...
[11:24:34] The following tasks did not complete: sass
[11:24:34] Did you forget to signal async completion?
[11:24:34] The following tasks did not complete: sass
[11:24:34] Did you forget to signal async completion?

この部分でエラーメッセージ。。
しかし、cssディレクトリにstyle.cssは問題なく作成されています。

ちなみにこの段階でのgilpfile.js

gilpfile.js
var sass = require("gulp-sass");

gulp.task("sass", function() {
    gulp.src("sass/**/*scss")
        .pipe(sass())
        .pipe(gulp.dest("./css"));
});

解決策

gulp.taskに渡すfunctionはパラメーターdoneをとって、そこに渡されるコールバックメソッドを最後に呼び出さなければならないみたいです。
コールバックを行うことで、task内の処理の終了を意味します。
そのため、記載のメソッドが呼ばれたタイミングで、そのtaskの処理は終了します。

そして、gilpfile.jsを変更。

gilpfile.js
gulp.task("sass", function(done) {
    gulp.src("sass/**/*scss")
        .pipe(sass())
        .pipe(gulp.dest("./css"));
    done();
});

そしてもう一度、$ gulp sass

$ gulp sass
[11:28:20] Using gulpfile ~/Desktop/blogtest/gulpfile.js
[11:28:20] Starting 'sass'...
[11:28:20] Finished 'sass' after 12 ms

コールバックした事によって、Finishedが走りました!

今度は問題なく、コンパイルできました。

つまり、各taskでは処理実行の終了を宣言する必要があるみたいですね。

17
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
6