2015-10-02 19 views
45

Sono abbastanza nuovo per inghiottire, e seguo tutorial in http://leveluptuts.com/tutorials/learning-gulp, ottengo questo errore:Gulp-uglify: throw er; // 'errore' non gestita evento

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) 

Ecco il mio codice:

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

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

}); 

e la albero di directory, solo semplice

-gulp 
    -js/ 
    -gulpfile.js 

grazie mille

risposta

99

Il tuo compito più brutto sta probabilmente soffocando uno dei file che sta tentando di elaborare. Gestire l'errore e scrivere l'output sulla console in modo da poter vedere quale file ha causato il fallimento dell'attività.

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

Quando si esegue nuovamente il vostro compito sorso, si continua a ottenere un errore, ma questa volta, a destra verso la parte superiore dell'output, si vedrà il numero di file e la linea che sta avendo uglify elaborazione guai. Debug da lì.

Forse è un errore di sintassi? Risolvilo e riprova.

Forse hai uno strano file _reference.js con caratteri imprevisti come quelli che vedi nei progetti di Visual Studio a volte? Escludi da gulp.src e riprova.

+0

ho avuto un errore simile con wiredep, ma non è stato in grado di capire il motivo per cui è stato retning thiis errore , anche con il codice fornito. Ho usato qualcosa del genere ma avevo ancora un ritorno di "Il primo argomento deve essere una stringa, Buffer, ArrayBuffer, Array ..." gulp.task ('wiredep',() => { gulp.src ('app/styles /*.scss ') .pipe (wiredep ({ ignorePath: /^(\.\/)+/ }). (' error ', function (e) { \t console.log (e); })) –

+0

Qualche consiglio sull'output dello stacktrace contenuto è un po 'più leggibile? 'JS_Parse_Error → stack:' e poi è tutto '\ n \ nmessa \ nge ... 'e molto difficile da ottenere per questo ... –

+0

Scrivi la tua linea di log come questa se non vuoi rompere il trionfo ' console log (e.Message); ritorna this.end(); ' –

0

Ho avuto lo stesso problema e stavo ottenendo lo stesso errore. Il problema era, uno dei miei file JS aveva @charset "UTF-8"; nella prima riga. Quindi la sintassi si stava interrompendo a causa del simbolo @. L'ho rimosso e ha funzionato bene.

{ 
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', 
.... 
.... 
} 
2

Inoltre è possibile utilizzare 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')); 
    }); 
5

Ho avuto lo stesso errore. Così ho provato a generare un errore nella console (grazie a bingo). Ho capito che il problema è che gulp-uglify non vuole lavorare con ES6. Ho cambiato il mio codice JS in ES2015 e voilà. Puoi anche utilizzare gulp-babel.

0

Ho avuto lo stesso problema e si è trattato di un file js che emetteva problemi. Il problema più grosso era che avevo 10 file js ma dopo aver scavato un po 'il mio problema non aggiungeva ; poiché questo ridurrebbe il tuo codice non importa che usi ES6 devi aggiungere ; alla fine del tuo codice o il minifying non lo farà lavoro.

0

Nel mio caso, sembra che non accetta "freccia-sintassi" Funzione (ad es data=>{ // do something; })