Почему перемещение объекта в массив приводит к сбою Gulp Uglify

У меня есть gulpfile, который должен минимизировать мои js-файлы в обычном режиме. У меня есть одна функция, которая запускает каждый цикл, имеющий следующую строку:

newArr.push({[keyName]:val});

Эта конкретная строка приводит к сбою uglify.

Вся функция такова:

function convertArrToNestedObjArr(arr, keyName) {

    var newArr = [];
    if(arr) {

        $.each(arr, function(k, val) {

            newArr.push({[keyName]:val});
        })
    }
    return(newArr);
}

Процесс Gulp дает следующую ошибку:

stream.js: 94 throw er; // Необработанная ошибка потока в канале. ^ Ошибка при новом JS_Parse_Error (eval at ...

1 ответ

Решение

Вы сказали, что этот код находится в файле, предназначенном для отправки в браузер, который был увеличен в процессе gulp.

Эта строка использует обозначение имени вычисляемого свойства ES2015. Я подозреваю, что минификатор просто еще не понимает этого. Если это произойдет, то в настоящее время довольно много браузерных JavaScript-движков этого не делают.

Если это проблема, проведите трансплантацию перед уродством (возможно, с Вавилоном или Трейсером) или замените

newArr.push({[keyName]:val});

с

var o = {};
o[keyName] = val;
newArr.push(o);
Другие вопросы по тегам