Постоянные проблемы с EBUSY в Windows

У меня есть очень простой 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 для редактирования файла. Я думаю, проблема в том, что gulp.src пытается прочитать файл, в то время как Sublime все еще пишет в него (хотя я не совсем уверен).

person jasonhansel    schedule 22.11.2014    source источник
comment
Не уверен, что это поможет решить эту проблему, но вы должны вернуть поток, созданный с помощью gulp.src, т.е. return gulp.src().pipe(gulp.dest());.   -  person Ben    schedule 24.11.2014


Ответы (2)


Так что я не совсем уверен в этом, потому что я не запускаю Windows, но вот несколько советов:

person Ben    schedule 24.11.2014
comment
Спасибо за вашу помощь! К сожалению, первые три предложения не сработали; Я думаю, что последую за твоим четвертым. Однако я, вероятно, зарегистрирую ошибку в gulp, а не в Vinyl-FS, так как я подозреваю, что это также может быть проблемой с gulp.watch. - person jasonhansel; 26.11.2014
comment
==== › Сначала попробуйте это ‹======= " title="код ошибки установки npm ebusy errono 4082"> stackoverflow.com/questions/36566236/ - person sijo vijayan; 18.08.2017

Есть большая вероятность, что один из ваших файлов открыт в Microsoft Word. Word блокирует доступ к файлу. Полностью выйдите из MS Word и пересоберите. Исправлена ​​проблема для меня. Надеюсь, поможет!

person Eleanor Zimmermann    schedule 22.06.2015
comment
Я так не думаю. Это файлы кода, а не те, которые я бы открывал в Word. - person jasonhansel; 22.06.2015
comment
Возможно, вы щелкнули правой кнопкой мыши и случайно открыли его там? Конечно, я знаю, что никто не редактирует код в Word намеренно. Но человеческая ошибка - вещь. Может быть, это не Word, а просто какая-то другая программа, которая блокирует файл. Возможно, запущен второй экземпляр localserver? - person Eleanor Zimmermann; 23.06.2015