javascript - sweet - ¿Cómo puedo recibir notificaciones de errores durante el proceso de búsqueda de fuentes?
sweet alert loading (3)
En mi gulpfile, simplemente escucho las excepciones no detectadas y notifico usando node-notifier :
var Notifier = require(''node-notifier'');
notifier = new Notifier();
process.on(''uncaughtException'', function(err) {
notifier.notify({title: ''error'', message: ''gulp process has crashed''});
setTimeout(function() {
console.error(err);
process.exit(1);
}, 1000);
});
Descubrí que era necesario un retraso de setTimeout
para que la notificación apareciera antes de salir del proceso.
Estoy usando browserify para poder usar módulos npm en mi código front-end, y trago para hacer mis tareas de compilación. Esto funciona bien:
var browserify = require(''gulp-browserify'');
gulp.task(''js'', [''clean''], function() {
gulp
.src(''./public/js/src/index.js'')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}))
.pipe(gulp.dest(''./public/js/dist''))
});
Sin embargo, si hay un error de sintaxis en mi JS, me gustaría recibir una notificación del error a través de una notificación de OS X. He visto esta pregunta similar y modifiqué mi código para agregar un .on(''error''...)
después de .browserify()
:
// Browserify/bundle the JS.
gulp
.src(''./public/js/src/index.js'')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}).on(''error'', function(err){
notify.onError({
message: "Error: <%= error.message %>",
title: "Failed running browserify"
}
this.emit(''end'');
})
.pipe(gulp.dest(''./public/js/dist''))
Sin embargo, esto no notifica cuando mi JS está roto. Agregar un console.log () dentro on(''error'',...)
tampoco se registra. Sospecho que esa pregunta no implica el uso de tuberías de trago.
¿Cómo puedo recibir notificaciones de errores durante el proceso de búsqueda de fuentes?
Utilizo gulp-fontanero para todas mis capturas de error:
gulp.task(''browserify'', function(){
return browserify(''./assets/js/src/app.js'')
.pipe(plugins.plumber())
.pipe(gulp.dest(''./assets/js''))
.pipe(plugins.notify({message: "browserify complete"}))
});
https://www.npmjs.com/package/gulp-plumber
Es posible que también deba usar gulp-streamify. No creo que browserify admita streams fuera de la caja. Ha pasado algún tiempo desde que intenté browserify con gulp, así que no estoy seguro de que mi fragmento de código funcione de la caja, lo siento por eso.
Use gulp-notify . Tenga en cuenta también que debe utilizar el módulo de navegador en lugar del módulo obsoleto gulp-browerify .
var browserify = require(''browserify''),
brfs = require(''brfs''),
watchify = require(''watchify''),
notify = require("gulp-notify");
var bundler = watchify(browserify({
basedir: "./public/js/src"
}));
// Browserify our code
gulp.task(''js'', [''clean''], function() {
// Browserify/bundle the JS.
return bundler.bundle()
// log errors if they happen
.on(''error'', function(err) {
return notify().write(err);
})
.pipe(source(''index.js''))
.pipe(gulp.dest(''public/js/dist''));
});
Aquí ejemplo cómo usar la utilidad browserify
en la tarea gulp
.
Aquí otro ejemplo de cómo usar browserify
y mostrar notificación, cuando js tiene errores de sintaxis.