web-dev-qa-db-fra.com

Gulp-uglify: lancer er; // événement 'erreur' non géré

je suis assez nouveau pour gulp, et je suis des tutoriels dans http://leveluptuts.com/tutorials/learning-gulp , je reçois cette erreur:

events.js:141
  throw er; // Unhandled 'error' event
  ^
Error
at new JS_Parse_Error (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:196:18)
at js_error (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:204:11)
at croak (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:680:9)
at token_error (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:688:9)
at unexpected (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:694:9)
at expr_atom (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1201:9)
at maybe_unary (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1363:19)
at expr_ops (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1398:24)
at maybe_conditional (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1403:20)
at maybe_assign (/home/kid/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1427:20)

voici mon code:

 var gulp = require('gulp')
    uglify = require('gulp-uglify');

gulp.task('default', function() {
    // body...
    gulp.src('js/*.js')
    .pipe(uglify())
    .pipe(gulp.dest('minjs'));

});

et l'arbre de l'annuaire, simple 

-gulp
     -js/
     -gulpfile.js

merci beaucoup

55
khue bui

Votre tâche d'ugification étouffe probablement l'un des fichiers qu'elle tente de traiter. Traitez l'erreur et écrivez le résultat sur la console afin de voir quel fichier entraîne l'échec de la tâche.

 gulp.task('scripts', ['clean'], function () {
      return gulp.src('js/*.js')
        .pipe(uglify().on('error', function(e){
            console.log(e);
         }))
        .pipe(gulp.dest('minjs'));
  });

Lorsque vous relancez votre tâche gulp, vous obtenez toujours une erreur, mais cette fois-ci, tout en haut de la sortie, vous verrez le fichier et le numéro de ligne que la modification a du mal à traiter. Déboguer à partir de là. 

Peut-être que c'est une erreur de syntaxe? Corrigez-le et essayez à nouveau. 

Peut-être avez-vous un fichier _reference.js étrange avec des caractères inattendus, comme ceux que vous voyez parfois dans les projets Visual Studio? Excluez-le du fichier gulp.src et réessayez.

123
bingo

J'ai eu la même erreur. J'ai donc essayé de générer une erreur sur la console (grâce à bingo ). J'ai réalisé que le problème est que gulp-uglify ne veut pas travailler avec ES6. J'ai changé mon code JS en ES2015 et le tour est joué. Vous pouvez également utiliser gulp-babel .

11
Senenko Vitaliy

Dans mon cas, il semble qu'il n'accepte pas la fonction "arrow-syntax" (Exemple: data=>{ // do something; })

4
Yuval A.

Aussi, vous pouvez utiliser gulp-util.

https://www.npmjs.com/package/gulp-util

var gutil = require('gulp-util');
gulp.task('scripts', ['clean'], function () {
      return gulp.src('js/*.js')
        .pipe(uglify().on('error',gutil.log))
        .pipe(gulp.dest('minjs'));
  });
4
Kamuran Sönecek

J'ai eu le même problème et obtenais la même erreur. Le problème était qu’un de mes fichiers JS avait un @charset "UTF-8"; dans la première ligne. Donc, la syntaxe était cassée à cause du symbole @. Je l'ai enlevé et cela a bien fonctionné.

{
SyntaxError: Unexpected character '@' at JS_Parse_Error.get 
(eval at <anonymous> (C:\xampp\htdocs\catch\node_moles\uglify-js\tools\node.js:21:1),
<anonymous>:86:23) at formatError (util.js:649:15)
at formatValue (util.js:554:18)
at formatProperty (util.js:795:15)
at util.js:655:12
at Array.map (native)
at formatObject (util.js:654:15)
at formatValue (util.js:593:16)
at inspect (util.js:186:10)
at exports.format (util.js:72:24)
message: 'Unexpected character \'@\'',
filename: 'all.min.css', line: 1, col: 0, pos: 0 },
plugin: 'gulp-uglify',
....
....
}
0

J'ai eu le même problème et il se résumait à un fichier js qui donnait des problèmes. Le problème le plus important était que j’avais 10 fichiers js, mais après avoir creusé un peu, mon problème n’ajoute pas le ;, Puisque cela réduira votre code, peu importe que vous utilisiez ES6, vous devez ajouter ; à la fin de votre code ou gagner un minimum. ça marche pas.

0
Justin

utilisez gulp-uglify-es à la place, gulp-uglify. Ça marche avec es6

0
Ivanna