Javascript UglifyJS2在[]上的赋值无效=
我已开始处理一个旧项目,该项目用于缩小其JS,但在运行gulp任务时,我遇到以下错误:Javascript UglifyJS2在[]上的赋值无效=,javascript,variable-assignment,uglifyjs,gulp-uglify,Javascript,Variable Assignment,Uglifyjs,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] =
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.task('compressJS', function (cb) {
pump([
gulp.src('app/assets/js/*.js'),
uglify(),
gulp.dest('build/js/')
],
cb
);
});
这是JavaScript ES6的一个特性,称为 问题在于
Uglify2
与ES6不兼容。您可以尝试使用新的兼容的Uglify3
,也可以先将ES6代码转换为ES5,例如gulp babel
:
使用Babel这样做的好处还在于,较旧的浏览器不支持ES6。首先使用支持ES6的UGLIFER或transpiler创建es5代码,然后使用uglify,谢谢@Daniel,这很有意义。因此,我尝试使用转换回es5,但没有任何变化。我是否需要选择es2015作为预设之一?您还知道为什么babel会在末尾添加一个空声明,
\u currentOption$text$s代码>?是的,您需要设置预设。我建议使用env
预设,您可以在其中提供应支持的浏览器列表。但是简单地使用es2015
也可以。声明只是巴贝尔转换代码所需要的东西。如果它们确实未使用,Uglify将为您移除它们。:)