ngAnnotate - Предупреждение: ожидаемый строковый ключ StringMap

Я получаю это предупреждение при использовании Grunt и grunt-ng-annotate.

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

Есть идеи?

4 ответа

Решение

Проблема оказалась в использовании обозначения ES6, в данном случае функций стрелок (=>), параметров по умолчанию и let.

Я не посмотрел подробно, почему ngAnnotate не поддерживает это.

Чтобы выяснить, где были проблемы, я переопределил предупреждение ngAnnotate с помощью grunt switch --force и позже в сборке uglify пожаловался на синтаксис ES6 с более подробной информацией.

Возможные причины:

  • () => {}
  • { value }
  • let
  • function (...args)
  • function (defaultVar = false)

Решения:

  • function () {}
  • { value: value }
  • var
  • function (args)
  • function (defaultVar) { defaultVar = (defaultVar === undefined) ? false : defaultVar }

Я также столкнулся с той же проблемой, но в моем случае была другая проблема.

Один из членов нашей команды инициализировал параметр функции некоторым значением по умолчанию. Что-то вроде следующего.

$scope.functionName = function(defaultVar = false){ 
    //some code 
}

и в моем сценарии глотка была строка

.pipe(plugins.if(release, plugins.ngAnnotate()))

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

Наконец, я смог решить эту проблему, удалив этот код инициализации переменной.

Надеюсь, это поможет кому-то...

Я также столкнулся с аналогичной проблемой, вызванной назначением деструктурирования:

      // the following line broke the build
const { name, gender, yearOfBirth, occupation } = profile;
Другие вопросы по тегам