我已经开始处理一个使用 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
);
});
最佳答案
这是 JavaScript ES6 的一个特性,称为 Destructuring Assignment .
问题是 Uglify2
不兼容 ES6。您可以尝试使用兼容的新 Uglify3
,或者先将您的 ES6 代码转换为 ES5,例如使用 gulp-babel
: https://www.npmjs.com/package/gulp-babel
用 Babel 做的好处还在于旧版浏览器不支持 ES6。
关于javascript - [] = 上的 UglifyJS2 无效赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46906805/