La capture de Browserify erreur d'analyse (option individuelle)
Je suis en utilisant gulp + browserify construire et assembler ma bibliothèque javascript. Maintenant, il y a une chose qui me tracasse: je suis à court d'un simple serveur avec livereload pour le développement via gulp. Cela fonctionne bien, mais dès que mon javascript contient une erreur de syntaxe, browserify déclenche une erreur provoquant l'arrêt du serveur.
La browserify code que j'utilise (à noter que j'ai ajouté un gestionnaire d'erreur):
browserify("./src/main.js")
.bundle({standalone: "SomeName", debug: false}).on('error', notify.onError({
message: "Error: <%= error.message %>",
title: "Failed running browserify"
})
);
Vient maintenant la partie intéressante:
Lorsque je supprime la version autonome de paramètre (et mon js est syntacticaly incorrect), le gestionnaire d'erreur incendies. Cependant, lorsque j'utilise ce réglage autonome, le gestionnaire d'erreur ne se déclenche pas, d'où le serveur lancé par avaler de l'arrêt)
Quelqu'un sait comment résoudre ce problème? Je pourrais toujours manuellement valider mes fichiers js dans le gulp, mais éviter cette solution de contournement
Vous devez vous connecter pour publier un commentaire.
La
on('error')
événement est déclenché. Cependant, browserify stream est un peu différent des autres Gulp flux. Dans le gestionnaire d'erreur de la fonction de browserify, vous avez besoin d'appeler explicitementthis.emit("end")
Un exemple gulp tâche
l'erreur de fonction de gestionnaire empêche gulp à partir de la plante,
this.emit("end")
arrête le flot courant, de ne pas le laisser courir à la prochaine tuyaux. Le gestionnaire d'événements peut également prendre d'erreur dans la transformation du plugin.Pour plus d'informations, vous pouvez lire ici http://truongtx.me/2014/07/15/handle-errors-while-using-gulp-watch/
this.emit("end")
au lieu dethis.end()
- a fonctionné pour moi.this.emit('end');
mais c'est inutile, le processus encore fige l'erreur se produit.this.emit
n'est pas une fonction, assurez-vous que vous n'êtes pas à l'aide de la flèche fonctions...this
se comporte de façon très différente à l'intérieur (découvert à la dure)this.destroy()
? Introduit dans Node.js 8 nodejs.org/api/stream.html#stream_readable_destroy_errorQue personne n'a posté une réponse (n'hésitez pas à me corriger si vous avez une meilleure solution!), voici la solution que j'ai ajouté pour obtenir mon cas d'utilisation de travail. J'ai bien compris le prévu Gulp version (v4) auront un meilleur support pour la gestion des erreurs, éventuellement la résolution de cette question. Cependant, pour l'instant j'utilise le js validateur
Après la recherche d'une solution qui ne tombe pas en panne gulp et continue à regarder/livereload même si browserify transforme crash, j'ai enfin trouvé un. J'ai écrit un petit billet de blog à ce sujet:
http://latviancoder.com/story/error-handling-browserify-gulp
Voici le code qui empêche gulp tâche à partir de la plante en cas de regroupement des erreurs. C'est une version légèrement modifiée du code de @tmtxt a posté. Le problème que j'ai eu avec sa version a été que " gulp.montre' arrêté la mise à jour après la première panne.
Bien, Parce que je ne pouvais pas trouver toutes les solutions qui continueront à regarder gulp fichier avec browserify, je résoudre ce
Il suffit d'ajouter une helper.js (le nom que vous voulez) de fichier dans votre répertoire courant, définir des chemins d'accès, et exécuter ce fichier dans le nœud de
CLI
. Vous n'avez même pas besoin d'installer browserify localement si vous l'avez dans le monde. Espérons que cette aide.