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