私は非常に単純な 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 は機能しなくなります)。
エラーが発生するたびに監視タスクが実行を停止するため、このエラーは問題です。この問題の助けにもなりませgulp-plumberん。.on('error', ...)
この問題を回避する方法はありますか? 関連する場合、私はWindowsを使用しています。
さらにいくつかの関連するポイント:
- sass を完全に削除しても問題は解決しません。
- いずれかのタスクの内容に try/catch を配置しても機能しません。
- Sublime Text 3 を使用してファイルを編集しています。Sublimeがまだファイルに書き込んでいる間にファイルを読み取ろうとすることが問題だと思います
gulp.src(完全にはわかりませんが)。