2015-05-06 11 views
7

Ho la seguente configurazione nei miei gulpfile.js:Browserify errori che terminano sorso orologio compito

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']); 
}); 

Tutto questo funziona perfettamente fino a quando sto scrivendo il codice che si traduce in un errore di browserify. Ciò accade frequentemente mentre sto modificando il codice in un file che dipende da una modifica che non ho ancora fatto in un altro file, elimina gli errori di browser.

Il problema è che quando si estinguono gli errori di browser termina l'operazione di controllo. Mi aspetterei che durante gli errori di browserify, semplicemente non finisca il suo compito ma che l'orologio continui in modo tale che quando faccio altre modifiche che permettano a browserify di funzionare correttamente lo farà. È problematico apportare modifiche e quindi ricaricare il browser e scoprire che non funziona solo per scoprire che il processo di controllo è terminato a causa di un errore di browser quando il codice era in uno stato errato.

C'è un modo per ingoiare quell'errore in modo che non arresti il ​​processo di visualizzazione? O c'è un altro pacchetto npm che guarda i file e non viene inciampato dall'errore di browserify?

+0

Controllare gulp-idraulico: https://www.npmjs.com/package/gulp-plumber – Pierrickouw

risposta

8

Se non si gestisce l'evento error, il flusso verrà generato. Si potrebbe gestire l'evento direttamente:

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)); 
}); 

Oppure si potrebbe prendere l'errore dopo getta:

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

La tua seconda soluzione è l'unica che ha funzionato per me. Sto indovinando il problema che ho avuto con browserify è che non sto guardando il flusso giusto. – user3162553

+0

Questa riga lo ha fatto per me: .on ('errore', console.error.bind (console)). Gulp idraulico e quant'altro non ha funzionato per me, – MartinJH

0

Per Browserify flussi è necessario chiamare emit nel gestore degli errori:

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)); 
}); 
Problemi correlati