2015-05-06 37 views
7

Mam następującą konfigurację w moich gulpfile.js:Browserify błędy kończące haustem zegarek zadanie

gulp.task('browserify', function() { 
    browserify(config.paths.browserifyEntry) 
     .transform(reactify) 
     .bundle() 
     .pipe(source('master.js')) 
     .pipe(gulp.dest(config.paths.dist)) 
     //.pipe(connect.reload()); 
}); 

gulp.task('watch', function() { 
    gulp.watch(config.paths.components, ['browserify']); 
    gulp.watch(config.paths.sassSource, ['sass']); 
}); 

To wszystko działa idealnie, dopóki mam kod, który skutkuje browserify błąd zapisu. Zdarza się to często, gdy edytuję kod w jednym pliku, który jest zależny od zmiany, której jeszcze nie dokonałem w innym pliku, przeglądnij błędy.

Problem polega na tym, że gdy przeglądasz błędy, kończy się zadanie zegarka. Spodziewam się, że podczas przeglądania błędów w przeglądarce po prostu nie zakończy to zadania, ale zegarek będzie kontynuowany, więc gdy wprowadzę inne zmiany, które pozwolą na pomyślne przeprowadzenie procesu przeglądania, zrobi to. Problematyczne jest wprowadzanie zmian, a następnie ponowne ładowanie przeglądarki i stwierdzenie, że nie działa ona tylko po to, aby stwierdzić, że proces oglądania zakończył się z powodu błędu przeglądania, gdy kod był w błędnym stanie.

Czy istnieje sposób na przełknięcie tego błędu, aby nie zatrzymać procesu oglądania? Czy istnieje inny pakiet npm, który ogląda pliki i nie potknie się o błąd przeglądania?

+0

Sprawdź gulp-hydraulik: https://www.npmjs.com/package/gulp-plumber – Pierrickouw

Odpowiedz

8

Jeśli nie poradzisz sobie ze zdarzeniem error, strumień zostanie rzucony. Można obsłużyć zdarzenia bezpośrednio:

gulp.task('browserify', function() { 
    browserify(config.paths.browserifyEntry) 
     .transform(reactify) 
     .bundle() 
     .on('error', console.error.bind(console)) 
     .pipe(source('master.js')) 
     .pipe(gulp.dest(config.paths.dist)); 
}); 

Albo można złapać błąd po rzuca:

process.on('uncaughtException', console.error.bind(console)); 
+1

Twoje drugie rozwiązanie jest jedyne, które sprawdziło się u mnie. Zgaduję, że problem z przeglądaniem jest taki, że nie oglądam właściwego strumienia. – user3162553

+0

Ta linia zrobiła to dla mnie: .on ("error", console.error.bind (console)). Gulp hydraulik i cokolwiek mi nie pasowało, – MartinJH

0

Dla Browserify strumieni trzeba zadzwonić emit w obsługi błędów:

gulp.task('browserify', function() { 
    browserify(config.paths.browserifyEntry) 
    .transform(reactify) 
    .bundle() 
    .on('error', function (error) { 
    console.error(error.toString()) 
    this.emit('end') 
    }) 
    .pipe(source('master.js')) 
    .pipe(gulp.dest(config.paths.dist)); 
});