Gulp - gulp-uglify 的事件错误
Gulp - events error with gulp-uglify
我正在 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
有关,我尝试注释掉 scripts
任务中的 uglify()
调用,它编译正常。
您知道为什么会这样吗?
按照此 , I installed the 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,并且运行良好。
找了2天发现我是let
关键字,我换成了var
现在一切正常。
uglify 不知道如何处理 let 关键字。
真是个废话!!!
我正在 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
有关,我尝试注释掉 scripts
任务中的 uglify()
调用,它编译正常。
您知道为什么会这样吗?
按照此 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,并且运行良好。
找了2天发现我是let
关键字,我换成了var
现在一切正常。
uglify 不知道如何处理 let 关键字。
真是个废话!!!