Подтвердить что ты не робот

Gulp -uglify: throw er;//Необработанное событие 'error'

Я новичок в 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

Большое спасибо

4b9b3361

Ответ 1

Ваша задача 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 и повторите попытку.

Ответ 2

У меня была такая же ошибка. Поэтому я попытался вывести ошибку на консоль (благодаря bingo). Я понял, что проблема в том, что gulp -uglify не хочет работать с ES6. Я изменил код JS на ES2015 и вуаля. Вы также можете использовать gulp-babel.

Ответ 3

Также вы можете использовать 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

У меня была такая же проблема, и я получал ту же ошибку. Проблема заключалась в том, что у одного из моих 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',
....
....
}

Ответ 5

У меня была такая же проблема, и она попала в файл js, который выдавал проблемы. Самая большая проблема заключалась в том, что у меня было 10 js файлов, но после небольшого копирования я не добавлял ; так как это уменьшит ваш код, не имеет значения, что вы используете ES6, вам нужно добавить ; в конце вашего кода, либо не будет работать.