62

我对 gulp 很陌生,我按照http://leveluptuts.com/tutorials/learning-gulp中的教程进行操作,我收到此错误:

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

多谢

4

7 回答 7

139

您的 uglify 任务可能会因它试图处理的文件之一而窒息。处理错误并将输出写入控制台,以便您查看导致任务失败的文件。

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

当你再次运行你的 gulp 任务时,你仍然会得到一个错误,但这一次,在输出的顶部,你会看到 uglify 处理有问题的文件和行号。从那里调试。

也许它是一个语法错误?修复它并重试。

也许您有一个奇怪的 _reference.js 文件,其中包含您有时在 Visual Studio 项目中看到的那些意外字符?从 gulp.src 中排除它,然后重试。

于 2015-10-08T03:39:43.133 回答
16

我有同样的错误。所以我尝试向控制台输出错误(感谢bingo)。我意识到问题在于 gulp-uglify 不想使用 ES6。我将我的 JS 代码更改为 ES2015,瞧。你也可以使用gulp-babel

于 2017-07-13T18:06:33.533 回答
8

就我而言,它似乎不接受“箭头语法”功能(例如data=>{ // do something; }

于 2018-02-04T15:41:50.100 回答
4

你也可以使用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'));
  });
于 2017-06-21T10:13:13.930 回答
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',
....
....
}
于 2017-06-05T12:57:49.510 回答
0

我有同样的问题,它归结为一个给出问题的 js 文件。最大的问题是我有 10 个 js 文件,但经过一番挖掘后,我的问题没有添加; ,因为这会缩小你的代码,无论你使用 ES6,你需要;在代码末尾添加,否则缩小将不起作用。

于 2017-12-18T10:59:36.630 回答
0

使用gulp-uglify-es代替 gulp-uglify。它适用于 es6

于 2018-11-30T10:16:01.597 回答