我有一个非常简单的 Gulpfile:
var gulp = require('gulp'),
prefix = require('gulp-autoprefixer'),
gsass = require('gulp-sass');
gulp.task('sass', function() {
gulp.src('scss/*.scss')
.pipe(gsass({
unixNewlines: true,
style: 'compact'
}))
.pipe(prefix('last 2 versions'))
.pipe(gulp.dest('.'));
});
gulp.task('default', ['sass'], function() {
gulp.watch('scss/*.scss', ['sass']);
});
当 SCSS 文件更改并且sass
任务运行时,我偶尔(大约 10% 的时间)在控制台上收到以下错误消息:
events.js:72
throw er; // Unhandled 'error' event
^
Error: EBUSY, open 'C:\whatever\scss\main.scss'
有问题的错误发生在调用gulp.src
. 将选项传递给read: false
该函数会阻止错误发生(但当然会阻止 sass 工作)。
这个错误是一个问题,因为只要遇到错误,watch 任务就会停止运行。既不gulp-plumber
也不.on('error', ...)
帮助解决这个问题。
有没有办法解决这个问题?我在 Windows 上,如果相关的话。
还有一些相关的点:
- 完全删除 sass 并不能解决问题。
- 围绕任一任务的内容进行尝试/捕获也不起作用。
- 我正在使用 Sublime Text 3 来编辑文件。我认为问题在于
gulp.src
在 Sublime 仍在写入文件时尝试读取文件(尽管我不完全确定)。