ruby-on-rails Rails Gem Uglifier 4.2不支持async/await,如何修复

uujelgoq  于 2023-05-19  发布在  Ruby
关注(0)|答案(1)|浏览(98)

我有一个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

zf9nrax1

zf9nrax11#

Uglifier readme
UglifyJS只支持ES 5。如果你需要压缩ES6,ruby-terser是一个更好的选择。
切换到ruby-terser是一种选择。你也可以使用Babel将ES6转换为ES 5。

相关问题