Gulp 4 sass忘记发信号异步完成

时间:2016-02-22 06:51:08

标签: javascript node.js gulp

我正在尝试用gulp sass建立我的sass,我得到了错误:

以下任务未完成:build,gulpSass 您是否忘记发出异步完成信号?

function sass() {
  return gulp.src(paths.sass)
    .pipe(sourcemaps.init())
    .pipe(sass.sync().on('error', sass.logError))
    .pipe(sourcemaps.write())
    .pipe(gulp.dest(buildDir));
}

gulp.task('build', gulp.series(
  clean,
  sass,
  html,
  images
));

有什么问题?

2 个答案:

答案 0 :(得分:1)

虽然我看不到你的其余代码,但问题很可能与命名冲突有关。我假设您将gulp插件别名为sass。如果你这样做,那么有两个变量使用相同的名称。

var sass = require('gulp-sass');
function sass() { ... }

后者优先于第一个。因此,当您拨打gulp.task('build', gulp.series(...,sass,...));时,假设您正在呼叫最后一个功能。哪个没有退货声明。

通过将别名重命名为var nodesass = require('gulp-sass');或重命名函数轻松解决。

答案 1 :(得分:0)

series或gulp.parallel,您必须在函数之前使用async关键字,否则可以使用如下所示的回调声明函数。

$path = storage_path($file->path);
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

在其他功能中也使用此逻辑。