【问题标题】:Gulp 4.0 signal async completion error despite returning stream尽管返回流,Gulp 4.0 信号异步完成错误
【发布时间】:2017-05-30 11:24:45
【问题描述】:

我有以下返回流的 gulp 任务。它在 gulp 3.9.1 中运行良好,但转换为 gulp 4.0,我得到:

您是否忘记发出异步完成信号?

const gulp = require('gulp');
const gulpif = require('gulp-if');
const plumber = require('gulp-plumber');
const rename = require('gulp-rename');
const buffer = require('vinyl-buffer');
const es = require('event-stream');
const browserify = require('browserify');
const browserifyInc = require('browserify-incremental');
const babelify = require('babelify');
const browserSync = require('browser-sync').create();

// Incrementally building the js
gulp.task('build-js-inc', () =>
  es.merge.apply(null, paths.entry.scripts.map(script => {
    const b = browserify(Object.assign({}, browserifyInc.args,
      {
        entries: script,
        extensions: ['.jsx'],
        debug: true
      }
    ));

    browserifyInc(b, { cacheFile: './browserify-cache.json' });

    return b.transform(babelify)
      .bundle()
        .on('error', handleErrors)
        .pipe(source(`./${script.split('/')[script.split('/').length - 1]}`))
        .pipe(buffer())
        .pipe(plumber())
        .pipe(rename(path => {
          path.extname = '.bundle.js';
        }))
        .pipe(gulp.dest('public/js'))
        .pipe(gulpif('*sw.bundle.js', gulp.dest('public')))
        .pipe(browserSync.reload({ stream: true }));
  }))
);

我已尝试将done() 添加到我的上游任务中,但它仍然出错,因为我认为它起源于此处并通过依赖于这一完成的后续任务传播。

【问题讨论】:

    标签: javascript gulp gulp-4


    【解决方案1】:

    问题最终出在模块 event-stream 上。显然是no longer being maintained

    @phated:

    不推荐使用对事件流的支持。一切都应该转移到 through2 等。也许只是完全弃用这个模块?

    我切换到merge-stream,现在我的 gulpfile 工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多