Ошибка записи после завершения в gulp.watch с gulp-connect

У меня есть простое наблюдение за gulp, которое перезагружает все js-файлы (используя gulp-connect), когда один из них имеет изменения, но я получаю следующую ошибку всякий раз, когда запускается заданная задача:

[15:14:35] Starting 'livereload:js'...
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: write after end
    at ServerResponse.OutgoingMessage.write (_http_outgoing.js:439:15)
    at ServerResponse.res.inject.res.write (C:\dev\test-livereload\node_modules\connect-livereload\index.js:115:37)
    at ReadStream.ondata (_stream_readable.js:555:20)
    at emitOne (events.js:96:13)
    at ReadStream.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at ReadStream.Readable.push (_stream_readable.js:134:10)
    at onread (fs.js:1984:12)
    at FSReqWrap.wrapper [as oncomplete] (fs.js:681:17)

Вот код:

gulp.task('livereload:js', function() {
  return gulp.src([paths.APP_ROOT + '/**/*.js'])
    //.pipe(wait(2000))  // if I add a small wait it doesn't crash as often
    .pipe(connect.reload());
});

gulp.task('run-watch', function() {
  gulp.watch([paths.APP_ROOT + '/**/*.js'], ['livereload:js']);
});

У меня есть похожая задача, которая проверяет изменения в файлах scss и компилирует их перед перезагрузкой, которая работает нормально.

1 ответ

Решение

Я нашел обходной путь. Вместо gulp.watch Я использую gulp-watch пакет для запуска connect.reload(), который можно использовать в трубе.

Я думаю, что было состояние гонки, которое запускало перезагрузку до того, как файлы были готовы.

Другие вопросы по тегам