2015-10-02 124 views
45

我很新吞掉了,我跟着教程http://leveluptuts.com/tutorials/learning-gulp,我得到這個錯誤:gulp-uglify:throw er; //未處理的「錯誤」事件

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) 

這裏是我的代碼:

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

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

}); 

和目錄的樹,只是簡單的

-gulp 
    -js/ 
    -gulpfile.js 

非常感謝

回答

99

您的uglify任務可能會窒息其中一個正在嘗試處理的文件。處理錯誤並將輸出寫入控制檯,以便可以看到哪個文件導致任務失敗。

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

當您再次運行一飲而盡任務,你仍然會得到一個錯誤,但這一次,對朝輸出的頂部,你會看到,醜化有困難處理的文件和行號。從那裏調試。

也許它的語法錯誤?修復它,然後再試一次。

也許你有一個奇怪的_reference.js文件,其中包含您在Visual Studio項目中看到的意外字符?從gulp.src中排除它,然後重試。

+0

我有wiredep類似的錯誤,但無法弄清楚它不接受「箭頭語法」爲什麼它retning thiis錯誤,即使使用您提供的代碼。我使用了類似的東西,但仍然返回「第一個參數必須是字符串,Buffer,ArrayBuffer,Array ...」。 ('error',function(e){ \t console。)(線程代碼({\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'))日誌(E); })) –

+0

有關輸出包含的堆棧跟蹤的任何建議更可讀? 'JS_Parse_Error→stack:'然後它都是'\ n \ nmessa \ nge ...',並且很難得到它...... –

+0

如果你不想突破這個問題,請寫下你的日誌行 'console .LOG(e.message);返回this.end();' –

0

我有同樣的問題,並得到相同的錯誤。 問題是,我的一個JS文件有@charset「UTF-8」;在第一行。因此,由於@符號,語法破裂。我刪除它,它運作良好。

{ 
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

您也可以使用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

我有同樣的錯誤。所以我試圖向控制檯輸出一個錯誤(感謝bingo)。我意識到問題在於gulp-uglify不想使用ES6。我將我的JS代碼更改爲ES2015,並且瞧。您也可以使用gulp-babel

0

我有同樣的問題,它歸結爲一個問題的js文件。最大的問題是我有10個js文件,但經過一點挖掘我的問題是沒有添加; ,因爲這會縮小您的代碼無關緊要你使用ES6你需要在代碼的末尾添加;或縮小將不會工作。

0

在我而言,它似乎功能 (如data=>{ // do something; }

相關問題