2017-12-11 3 views
0

Ich benutze Schluck in meinem Projekt für prod Build-Aktivitäten. Ich habe Aufgaben wie folgendeSchluck stoppen Schluck Prozess auf jeden Fehler

gulp.task('bundle-libs', bundlelibs); 
gulp.task('bundle-modules', bundle); 

/* build libs for production */ 
gulp.task('build:prod', function (done) { 
    runSequence('clean', ['styles', 'copy-assets'], 'compile', 'systemjs_config', 'prefix_routes', 'bundle-libs', done) 
}); 

/* create module bundles */ 
gulp.task('bundle', function (done) { 
    runSequence('copy-required-files', 'bundle-modules', done); 
}); 

Aber in diesem, wenn eine der Aufgaben scheitern i einen Fehler in der Konsole, aber der Build-Prozess wird fortgesetzt. Was ich tun möchte, ist, wenn eine der Aufgaben fehlschlägt, möchte ich einen passenden Fehler in der Konsole anzeigen und den Build-Prozess stoppen, dh ich möchte die nachfolgenden Aufgaben nicht ausführen. Wie geht das? Ich suchte online, aber konnte nichts erhalten, das das Problem lösen könnte. Bitte helfen Sie. Vielen Dank.

Antwort

1

Es hängt von der Art des Fehlers ab, den Sie zu behandeln versuchen. Wenn es als Ausnahme ausgelöst wurde, können Sie es mit try-catch umgehen. Es wird in catch-Block gehen und dort nicht ausgeführt werden Funktion, wenn Sie keine verbleibenden Aufgaben ausführen möchten. Beispiel:

function testTask(done) { 
    try { 
    return gulp.src('tmp/dist/*.html') 
      .pipe(gulp.dest('tmp/dist')); 
    } catch(error) { 
    const error_message = 'Error:: task failed. ' + error.name + ' : ' + error.message; 
    } 
} 

Wenn es Fehler-Callback ist, gibt es viele Möglichkeiten, sie zu behandeln. Sie können versuchen gulp plumber

+0

sollte dies für jede Aufgabe erledigt werden? Wenn ich n Anzahl von Funktionen habe, ist es möglich, alle zusammen zu behandeln? –

+0

Ja, Sie können, aber bis Sie den Fehler abfangen und Rückruf ausführen, wird es eine andere Aufgabe starten. Dies geschah, als ich es versuchte. weil ich vor dem Rückruf einen Async-Anruf hatte, der Zeit brauchte. –