UglifyJS2 [] =上的无效赋值

时间:2017-10-24 09:25:14

标签: javascript variable-assignment uglifyjs gulp-uglify

我开始处理一个使用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(/[\/-]/);

如果我通过这些行,我会收到更多错误,因为newTitlenewValprodWprodLboxL都在其他地方使用过。

知道这里发生的事情是否有办法避免这些错误?

这是 gulp任务我正在运行以防万一...

gulp.task('compressJS', function (cb) { 
    pump([
            gulp.src('app/assets/js/*.js'),
            uglify(),
            gulp.dest('build/js/')
        ],
        cb
    );
});

1 个答案:

答案 0 :(得分:2)

这是JavaScript ES6的一项功能,名为Destructuring Assignment

问题是Uglify2与ES6不兼容。您可以尝试使用兼容的新Uglify3,也可以首先将ES6代码转换为ES5,例如gulp-babelhttps://www.npmjs.com/package/gulp-babel

使用Babel进行此操作的优势还在于旧版浏览器不支持ES6。