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) решила проблему.