使用 gulp-connect 在 gulp.watch 结束后写入错误
Error write after end on gulp.watch with 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 文件中的更改并在重新加载之前编译它们,工作正常。
我找到了解决方法。而不是 gulp.watch
我使用 gulp-watch
包到 运行 connect.reload()
,它可以在管道中使用。
我认为在文件准备好之前有一个竞争条件触发了重新加载。
我在 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 文件中的更改并在重新加载之前编译它们,工作正常。
我找到了解决方法。而不是 gulp.watch
我使用 gulp-watch
包到 运行 connect.reload()
,它可以在管道中使用。
我认为在文件准备好之前有一个竞争条件触发了重新加载。