我开始处理一个使用gulp-uglify来缩小它的JS的旧项目,但是当我运行gulp任务时出现以下错误:
GulpUglifyError: unable to minify JavaScript
Caused by: SyntaxError: Invalid assignment
File: app/assets/js/main.js
Line: 92
invalid assignment [] =
当我看第92行时,我确实看到了一个奇怪的变量赋值,它有一个我不熟悉的语法:
[newTitle, newVal] = $('#' + elementId + '-title').text().replace('*', '').split(':');
后来发生在:
[prodW = 0, prodL = 0, boxL = 0] = currentOption.text().split(/[\/-]/);
如果我通过这些行,我会收到更多错误,因为newTitle
,newVal
,prodW
,prodL
,boxL
都在其他地方使用过。
知道这里发生的事情是否有办法避免这些错误?
这是 gulp任务我正在运行以防万一...
gulp.task('compressJS', function (cb) {
pump([
gulp.src('app/assets/js/*.js'),
uglify(),
gulp.dest('build/js/')
],
cb
);
});
答案 0 :(得分:2)
这是JavaScript ES6的一项功能,名为Destructuring Assignment。
问题是Uglify2
与ES6不兼容。您可以尝试使用兼容的新Uglify3
,也可以首先将ES6代码转换为ES5,例如gulp-babel
:https://www.npmjs.com/package/gulp-babel
使用Babel进行此操作的优势还在于旧版浏览器不支持ES6。