Javascript 吞下4个sass忘记发出异步完成信号
我试图用gulp sass构建我的sass,但我得到了错误: 以下任务未完成:构建、打包 您忘记发出异步完成信号了吗?Javascript 吞下4个sass忘记发出异步完成信号,javascript,node.js,gulp,Javascript,Node.js,Gulp,我试图用gulp sass构建我的sass,但我得到了错误: 以下任务未完成:构建、打包 您忘记发出异步完成信号了吗? function sass() { return gulp.src(paths.sass) .pipe(sourcemaps.init()) .pipe(sass.sync().on('error', sass.logError)) .pipe(sourcemaps.write()) .pipe(gulp.dest(buildDir)); }
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
));
问题出在哪里?尽管我看不到代码的其余部分,但问题很可能与命名冲突有关。我假设您将gulp插件别名为
sass
。如果您这样做了,那么有两个变量使用相同的名称
var sass = require('gulp-sass');
function sass() { ... }
后者优先于前者。所以当您调用gulp.task('build',gulp.series(…,sass,…)时代码>假设您正在调用最后一个函数。它没有返回语句
通过将别名重命名为类似于var nodesass=require('gulp-sass')的名称,可以轻松解决此问题
或重命名函数。series或gulp.parallel,在函数之前必须使用async关键字,否则可以使用回调声明函数,如下所示
function sass(cb) {
return gulp.src(paths.sass)
.pipe(sourcemaps.init())
.pipe(sass.sync().on('error', sass.logError))
.pipe(sourcemaps.write())
.pipe(gulp.dest(buildDir));
cb();
}
在其他函数中也使用此逻辑。非常感谢,这是我的问题!我只是碰巧没有在我的代码编辑器中启用Javascript linter,否则它会捕捉到这一点并节省我一个小时!