Подтвердить что ты не робот

Uncaught SyntaxError: в режиме строгого режима функции могут быть объявлены только на верхнем уровне или сразу в пределах другой функции

Привет, когда я запускаю этот проект в режиме разработчика (grunt server) https://github.com/kennethlynne/generator-angular-xl все в порядке, но когда я запускаю его в режиме производства ( grunt build) Я получаю `

Uncaught SyntaxError: в коде строгого режима функции могут быть только объявленный на верхнем уровне или непосредственно в рамках другой функции

Кто-нибудь знает, что происходит? Спасибо,

Ps. Я отправил ссылку на проект вместо кода, поскольку JS разделен на многие файлы.

4b9b3361

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