2016-02-10 3 views
1

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

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

Это одна конкретная строка заставляет уродовать потерпеть неудачу.

Вся функция заключается в следующем:

function convertArrToNestedObjArr(arr, keyName) { 

    var newArr = []; 
    if(arr) { 

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

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

процесс Глоток дает следующее сообщение об ошибке:

stream.js:94 throw er; // Unhandled stream error in pipe. ^Error at new JS_Parse_Error (eval at ...

+0

Что такое '[KEYNAME]'? – Philipp

+0

@Philipp: он находится в полуразделенном коде, это аргумент для функции включения. Эта нотация - это обозначение * вычисленного имени ES2015. Таким образом, OP должен использовать Node v4 или выше (или, если нет, это часть проблемы). –

+0

@ T.J.Crowder Извините, что неясно. Это один из файлов js, который мой процесс gulp пытается минимизировать/uglify. Но это приводит к сбою процесса глотки. –

ответ

1

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

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

Если это проблема, transpile перед тем uglifying (возможно, с Бабель или Traceur), или заменить

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

с

var o = {}; 
o[keyName] = val; 
newArr.push(o); 
Смежные вопросы