2015-01-17 35 views
18

Quando uso gulp-uglify con browserify ottengo un errore diUglify tiri errore di analisi

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error 
    at new JS_Parse_Error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:189:18) 
    at js_error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:197:11) 
    at croak (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:656:9) 
    at token_error (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:664:9) 
    at expect_token (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:677:9) 
    at expect (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:680:36) 
    at /home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1222:13 
    at /home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:703:24 
    at expr_atom (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1152:35) 
    at maybe_unary (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1327:19) 
    at expr_ops (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1362:24) 
    at maybe_conditional (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1367:20) 
    at maybe_assign (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1391:20) 
    at expression (/home/rkmax/my-project/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1410:20) 

questo è il mio script compito

gulp.task('scripts', function() { 

    var bundler = browserify({ 
     entries: ['./src/scripts/main.js'], 
     debug: debug 
    }).transform(stringify()); // the error persist even without this transformation 

    bundler 
     .bundle() 
     .on('error', handleErrors) 
     .pipe(source(getBundleName() + '.js')) 
     .pipe(jshint()) 
     .pipe(jshint.reporter('default', { verbose: true })) 
     .pipe(jshint.reporter('fail')) 
     .pipe(buffer()) 
     .pipe(sourcemaps.init({loadMaps: true})) 
     .pipe(uglify()) 
     .pipe(sourcemaps.write('./')) 
     .pipe(gulp.dest('./web/js')); 
}); 
+0

Se hai trovato una soluzione al problema, sia a) accettare la risposta che risolto (forse l'aggiunta di un commento che dice come), o B) Pubblica il tuo propria risposta che mostra come è risolto. (Che va assolutamente bene su SO, purché sia ​​realmente diverso dalle risposte esistenti. SO ti consentirà di accettare la tua risposta dopo 48 ore.) –

risposta

6

Ho riscontrato questo stesso problema con gulp-concat-sourcemap e gulp-uglify. Ho risolto ignorando i file di mappa con gulp-ignore:

gulp.task("uglify-src", function() { 
    gulp.src([ "src/js/**/*.js" ]) 
    .pipe(concat("app.js")) 
    .pipe(ignore.exclude([ "**/*.map" ])) 
    .pipe(uglify()) 
    .pipe(gulp.dest("dist/js")); 
}); 
62

uglify potranno analizzare il contenuto di script prima minifying esso. Sospetto che una delle mappe sorgente browserify sia inclusa nello stream fino a uglify. Ad ogni modo per trovare il problema è possibile utilizzare il metodo gulp-utillog per gestire le eccezioni di uglify. Esempio:

... 
var gulpUtil = require('gulp-util'); 

gulp.task('scripts', function() { 
    ... 
     .pipe(sourcemaps.init({loadMaps: true})) 
     .pipe(uglify().on('error', gulpUtil.log)) // notice the error event here 
     .pipe(sourcemaps.write('./')) 
     .pipe(gulp.dest('./web/js')); 
}); 

Se si riscontrano ancora problemi che fissano il problema, inviare i dettagli dopo che incorpora il log degli errori.

+0

non sono sicuro del motivo per cui ho impiegato così tanto tempo a trovare questo ... gulp-util ha aiutato per individuare subito l'errore .. Grazie per aver postato questo! – hanzolo

+0

FWIW puoi anche fare '.on ('error', console.log)' probabilmente non così conciso come sopra ma non voglio un'altra dipendenza, tuttavia ... – segFault

+0

Unreal! Grazie! Avevo dichiarato 2 variabili usando "let" ... Sto passando da Swift3 a JS: S –

0

Potrebbe essere un semplice errore nell'origine file JavaScript. Prova a disabilitare uglify commentandolo nel tuo gulpfile e verifica se la console del tuo browser rileva il vero problema.

gulp.task('minified', function() { 
    return gulp.src(paths.concatScripts) 
     .pipe(sourcemaps.init())  
     //.pipe(uglify()) 
     .pipe(sourcemaps.write('.', { addComment: false }))   
     .pipe(gulp.dest(publishUrl)); 
});