1

私は非常に単純な 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(完全にはわかりませんが)。
4

2 に答える 2

3

ファイルの 1 つを Microsoft Word で開いている可能性は十分にあります。Word がファイルへのアクセスをロックします。MS Word を完全に終了し、再ビルドします。私の問題を修正しました。それが役に立てば幸い!

于 2015-06-22T19:58:54.850 に答える