Использование gulp с командой на локальном сервере. Ошибка: EPERM: операция не разрешена, chmod

Я работаю с веб-командой, и мы храним все наши файлы на локальном общем сервере в офисе. (мы медленно переводим все на git, поэтому, пожалуйста, не комментируйте, насколько мы глупы из-за того, что не используем git. Спасибо!)

Мы используем gulp для компиляции нашего sass в css, и когда один из нас компилирует, все в порядке, но как только кто-то другой пытается запустить процесс node и скомпилировать с помощью gulp, мы получаем следующую ошибку....

[10:12:53] Starting 'sass'...
   [10:12:53] Starting 'watch'...
   [10:12:54] Finished 'watch' after 173 ms
   [10:12:54] 'sass' errored after 442 ms
    EPERM: operation not permitted, chmod '/the file path/'

Я пытался использовать chmod для изменения прав доступа к файлам, но я не думаю, что это проблема. Я использую атом в качестве редактора, а некоторые другие разработчики в команде используют возвышенное.

Я читал, что некоторые редакторы могут блокировать файлы. Не уверен, что это причина, но если это так, я не знаю, как это исправить. Является ли единственным решением этой проблемы использование git и наличие локальных копий на наших персональных компьютерах?

Заранее спасибо!

gulpfile.js

// Include gulp
var gulp = require('gulp');

// Include Our Plugins
var sass = require('gulp-sass');
var plumber = require('gulp-plumber');
var cleanCSS = require('gulp-clean-css');
var sourcemaps = require('gulp-sourcemaps');


var sassOptions = {
    errLogToConsole: true,
    outputStyle: 'nested' // Styles: nested, compact, expanded, compressed
};

// Compile Sass file to CSS, and reload browser(s).
gulp.task('sass', function() {
    return gulp.src('includes/scss/*.scss')
        .pipe(plumber())
        .pipe(sourcemaps.init())
        .pipe(sass.sync(sassOptions))
        .pipe(sass.sync().on('error', sass.logError))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('includes/css'));
});

gulp.task('minify-css', function() {
  return gulp.src('includes/css/*.css')
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(cleanCSS({compatibility: 'ie8'}))
    .pipe(sourcemaps.write())
    .pipe(gulp.dest('includes/css'));
});

// Watch Files For Changes
gulp.task('watch', function() {
  gulp.watch('includes/scss/**/*.scss', ['sass']);
});

// Default Task
//gulp.task('serve', ['sass', 'minify-css', 'watch']);
gulp.task('serve', ['sass', 'watch']);

person Garrett Sanderson    schedule 01.02.2017    source источник


Ответы (4)


Это происходит потому, что вам нужно запустить gulpfile от имени администратора. Так что запустите sudo -i, введите свой пароль администратора, а затем просто запустите снова. У меня была такая же проблема, это сработало для меня.

person Julio Graffin    schedule 13.08.2017

Иногда это вызвано Watch. Но чаще всего это происходит потому, что Gulp сохраняет флаги в команде gulp.dest. Если у вас есть исходный файл с флагами только для чтения. Вы должны перезаписывать флаги каждый раз, когда ваш исходный файл включается в команду gulp.dest.
Таким образом:

.pipe(gulp.dest('includes/css', mode: 0o777));
person Piero    schedule 12.10.2018
comment
это должно быть {режим: 0777} - person open-ecommerce.org; 10.02.2019

Эта проблема также случилась со мной. Что я сделал, так это начал с терминала как root и просто написал gulp мне, я работал.

person brando vidal    schedule 26.10.2017

Просто удалите gulp :

npm uninstall gulp -g

потом

npm install gulp -g

Установите path в среде, допустимой в Windows.

Перезагрузите систему или командную строку.

person Ashish Gupta    schedule 24.09.2019