Gulp - 与gulp-uglify的事件错误

问题描述 投票:1回答:2

我正在开发一个HTML / JS / CSS网站,我使用Gulp作为自动化工具。

运行gulp serve时它运行得很好,但运行gulp build时收到以下错误:

[18:24:52] Using gulpfile myProject/gulpfile.js
[18:24:52] Starting 'jshint'...
[18:24:52] Starting 'css'...
[18:24:52] Starting 'scripts'...
[18:24:52] Starting 'partials'...
[18:24:52] Starting 'images'...
[18:24:53] Starting 'videos'...
[18:24:53] Starting 'fonts'...
[18:24:53] Starting 'fileinclude'...
[18:24:53] Starting 'extras'...
[18:24:53] Finished 'jshint' after 518 ms
[18:24:53] all files 48.19 kB
[18:24:53] Finished 'fileinclude' after 245 ms

events.js:154
      throw er; // Unhandled 'error' event
      ^
Error
    at new JS_Parse_Error (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:1534:18)
    at js_error (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:1542:11)
    at croak (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2089:9)
    at token_error (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2097:9)
    at unexpected (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2103:9)
    at expr_atom (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2618:13)
    at maybe_unary (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2792:19)
    at expr_ops (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2827:24)
    at maybe_conditional (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2832:20)
    at maybe_assign (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2856:20)
    at expression (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2875:20)
    at expr_atom (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2608:26)
    at maybe_unary (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2792:19)
    at expr_ops (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2827:24)
    at maybe_conditional (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2832:20)
    at maybe_assign (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2856:20)

这是gulpfile.js的摘录:

/*global -$ */
'use strict';

var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
var browserSync = require('browser-sync');
var reload = browserSync.reload;
var sass = require('gulp-ruby-sass');
//var concat = require('gulp-concat');  
var rename = require('gulp-rename'); 
var gulpUtil = require('gulp-util');  
var uglify = require('gulp-uglify');  

//script paths
var jsFiles = 'app/scripts/**/*.js',  
    jsDest = 'dist/scripts';

gulp.task('scripts', function() {  
    return gulp.src(jsFiles)
        //.pipe(concat('main.js'))
        .pipe(rename('main.min.js'))
        .pipe(uglify()) // issue comes from here
        .pipe(gulp.dest(jsDest));
});

gulp.task('build', ['jshint','css', 'scripts', 'partials', 'images', 'videos', 'fonts', 'fileinclude', 'extras'], function () {
  return gulp.src('dist/**/*').pipe($.size({title: 'build', gzip: true}));
});

gulp.task('default', ['clean'], function () {
  gulp.start('build');
});

由于错误消息似乎与uglify-js有关,我试图在uglify()任务中注释掉scripts调用并且编译得很好。

你知道为什么会这样吗?

gulp gulp-uglify
2个回答
1
投票

正如在这个post中所建议的那样,我安装了gulp-util软件包并使用其log()方法获得有关此错误的更多详细信息

var gulpUtil = require('gulp-util');
gulp.task('scripts', function() {  
    return gulp.src(jsFiles)
        .pipe(rename('main.min.js'))
        .pipe(uglify().on('error', function(e){
            console.log(e);
            return this.end();
         }))
        .pipe(gulp.dest(jsDest));
});

这是我收到的错误消息:

{ [Error: myProject/app/scripts/main.min.js: SyntaxError: Unexpected token: punc ())]
  message: 'myProject/app/scripts/main.min.js: SyntaxError: Unexpected token: punc ())',
  fileName: 'myProject/app/scripts/main.min.js',
  lineNumber: 114,
  stack: 'Error\n    at new JS_Parse_Error (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:1534:18)\n    at js_error (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:1542:11)\n    at croak (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2089:9)\n    at token_error (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2097:9)\n    at unexpected (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2103:9)\n    at expr_atom (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2618:13)\n    at maybe_unary (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2792:19)\n    at expr_ops (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2827:24)\n    at maybe_conditional (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2832:20)\n    at maybe_assign (eval at <anonymous> (myProject/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2856:20)',
  showStack: false,
  showProperties: true,
  plugin: 'gulp-uglify' }

我从main.js检查了第114行,发现我在那里留下了一个uglify不理解的ES6语法。我将它转换为ES5并且工作正常。


1
投票

搜索了2天后,我发现我是let关键字,我用var替换它,现在一切正常。 uglify不知道如何处理let关键字。多么糟糕!

© www.soinside.com 2019 - 2024. All rights reserved.