我有一个Ruby on Rails项目,它在前端使用了一些Javascript。在开发模式下,它运行良好,但当试图构建Docker容器(编译资产)时,Uglifier给出错误Uglifier::Error: Unexpected token: operator (=)
。违规代码是:
var MyController = (function() {
let self = undefined;
MyController = class MyController {
constructor() {
self = this;
}
init() {...}
... // lots more code
loadAsync = async (targetElement, num) => { // <= this is the offending line
await this.delay(5);
$.ajax({
url: `...`,
method: 'GET',
dataType: 'HTML',
complete(response) {
...
}
});
};
delay = ms => new Promise(res => setTimeout(res, ms));
...
我知道Uglifier在后台使用了UglifyJS,这在async/await中有问题。现在是否有解决此问题的可用版本,如果有,如何安装工作版本?我使用最新的Uglifier gem版本(4.2),使用选项harmony: true, mangle: false
。
1条答案
按热度按时间zf9nrax11#
Uglifier readme说
UglifyJS只支持ES 5。如果你需要压缩ES6,ruby-terser是一个更好的选择。
切换到ruby-terser是一种选择。你也可以使用Babel将ES6转换为ES 5。