【发布时间】:2015-06-23 03:58:54
【问题描述】:
我有一个非常简单的 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 并不能解决问题。
- 对任一任务的内容进行 try/catch 也不起作用。
- 我正在使用 Sublime Text 3 来编辑文件。我认为问题在于
gulp.src在 Sublime 仍在写入文件时尝试读取文件(尽管我不完全确定)。
【问题讨论】:
-
不确定它是否有助于解决这个问题,但您应该返回使用
gulp.src创建的流 - 即return gulp.src().pipe(gulp.dest());
标签: windows node.js gulp gulp-watch