Uncaught SyntaxError: в режиме строгого режима функции могут быть объявлены только на верхнем уровне или сразу в пределах другой функции
Привет, когда я запускаю этот проект в режиме разработчика (grunt server) https://github.com/kennethlynne/generator-angular-xl все в порядке, но когда я запускаю его в режиме производства ( grunt build) Я получаю `
Uncaught SyntaxError: в коде строгого режима функции могут быть только объявленный на верхнем уровне или непосредственно в рамках другой функции
Кто-нибудь знает, что происходит?
Спасибо,
Ps. Я отправил ссылку на проект вместо кода, поскольку JS разделен на многие файлы.
Ответы
Ответ 1
То, как я решил проблему, - это удалить 'use strict'
, который был выше jquery в окончательном minified script. Другой способ может изменить версию jQuery на один без строгой ошибки
EDIT: В конце концов, это была ошибка минимизации jQuery в версии 1.11, и легкое исправление для этого - перейти к вашему файлу Grunt и прокомментировать строку
banner: "'use strict';\n"
Ответ 2
Вот что говорит сообщение об ошибке:
функции могут быть объявлены только на верхнем уровне или сразу в пределах другой функции
Вы не должны помещать объявление функции внутри любого другого блока, например, if-statement или for-loop.
Пример:
'use strict';
function some() {
function okay() {
}
let x = 1;
function no_problem() {
}
if (x == 1) {
function BOOM() { // <- wrong!
}
}
}
Ответ 3
Как кто-то предложил выше, вы можете раскомментировать часть 'use strict';
или, что еще лучше, изменить синтаксис функции
вместо
function funcName (param) { }
использование
funcName = function(param) {};
Ответ 4
В дополнение к правильным ответам, этот мог также быть ошибкой в FireFox в некоторых конкретных сценариях.
У нас было это сообщение об ошибке на компьютере одного пользователя. В файле JavaScript была use strict
строка ниже метода, который выкинул эту ошибку (на что это не должно быть затронуто)
Это была проблема с FireFox Version 45.9.0 (а может быть и с более старыми версиями). Обновление Firefox до самой последней версии (в настоящее время 52.4) решило проблему.