Angular TypeError: b не определено при использовании uglify

Я использую Angular, и, как вы знаете, есть Angular «1» (старая версия) и Angular 2 (самая новая), которые включают машинописный текст.

Это моя проблема, с которой я столкнулся сегодня: я делаю приложение с использованием angular, поэтому я создал папку проекта (project-frontend) и установил локально grunt, с помощью Bower я загрузил пакеты для angular.

Я создал файл gruntfile.js и настроил его для следующих задач:

"grunt-contrib-concat": "^1.0.1"
"grunt-ng-annotate": "^2.0.2"
"grunt-contrib-uglify": "^2.0.2"

И со многими другими, вроде cssmin, htmlmin и т.д. и т.п., но проблемы возникают именно с этими задачами, точнее с uglify.

Проблема в том, что если я сопоставлю все файлы угловых js (angular.js, angular-rout.js, angular-resource.js...) и все ухудшу, то, когда я разверну свою войну в Tomcat, я получаю это ошибка:

TypeError: b не определен

Итак, я думаю, что причиной проблемы является uglify, потому что я пытался запустить те же задачи для другого старого проекта, в котором был uglify 1.0.1, и все работает, я также контролировал это, если я просто запускаю concat и ngAnnotate, окончательные файлы angular (один из этого проекта и один из последнего) практически идентичны.

Я не знаю, должно ли это что-то делать с машинописным текстом (увидев ошибку, о которой я подумал), потому что я предположил, что машинописный текст был вставлен в angular с версии 2.0.0, и в настоящее время я работаю с версией 1.5.8. (я тоже пробовал 1.2.9).

Я контролировал свой код приложения с помощью jshint (это первая задача, которую я запускаю), и в терминале не было никаких сообщений об ошибках.

Я также попытался перенастроить задачи, взяв в качестве примера файл старого проекта Gruntfile.js.

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


person Community    schedule 28.08.2016    source источник
comment
ngAnnotate может пропустить такие вещи, как функции в ui-bootstrap / ui-router, которые вам, возможно, потребуется специально пометить комментарием @ngInject. Можете ли вы найти функцию с неопределенным b?   -  person Phil    schedule 29.08.2016
comment
Итак, «b is undefined» встречается в строке 1 с столбцом 461 (минифицированного файла), и это то, что напечатано рядом с ним var f=b.$$minErr($resource)   -  person    schedule 29.08.2016
comment
Хорошо, наконец, я нашел ошибку, я неправильно копировал файлы с concat, конечно, мне не хватало файла для создания окончательного углового файла :)   -  person    schedule 29.08.2016


Ответы (1)


Хорошо, теперь, когда я нашел ошибку, как я написал в комментариях под своим вопросом, я понял, что объединение файлов js выглядит следующим образом:

src: 'bower_components/**/*.js'

Который должен объединить все js-файлы внутри папок и подпапок в моем каталоге bower_components, просто не знаю, почему, но ломает окончательные файлы angular, если я пишу

src: ['bower_components/angular/*.js',
      'bower_components/angular-route/*.js',
      'bower_components/angular-resource/*.js']

Который указывает непосредственно на все файлы, которые необходимо объединить, в моем приложении все работает с угловым конкатенированным и угловым файлом.

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

echo bower_components/**/*.js

Я вижу этот вывод:

bower_components/angular/angular.js bower_components/angular-resource/angular-resource.js bower_components/angular-route/angular-route.js

Кстати, это похоже на решение проблемы такого типа, надеюсь, это поможет кому-то в будущем.

person Community    schedule 29.08.2016
comment
Посмотрите на порядок файлов: когда вы разбиваете его сами, angular-route находится выше angular-resource, автоматический - после. Попробуйте посмотреть, есть ли там незавершенный файл или функция, которая может нарушить конкатенацию файлов. - person casraf; 29.08.2016
comment
Я пытался изменить их порядок, вставив angular, angular-resource и angular-route, приложение все еще работает, я думаю, что проблема в ** при попытке добраться до всех файлов в папке и подпапках - person ; 29.08.2016
comment
У вас есть возможность посмотреть выходной файл? Звучит странно, что ** так портится, хотя я думаю, что это возможно - person casraf; 29.08.2016
comment
Я вижу выходной файл, но в нем 40 000 и более строк, и поиск ; или , между прочим, затруднен, ** и я проверил тот факт, что файлы не скомпрометированы изменением порядка, все работает правильно - person ; 29.08.2016
comment
Тогда это действительно странно. Но думаю, вы обнаружили проблему с этим типом конкатенации. - person casraf; 29.08.2016
comment
Правда, очень странно, потому что с файлами приложения js все работает отлично, кстати, решение состоит в том, чтобы указать каждый файл внутри папки напрямую, возможно, есть какие-то проблемы с разрешениями. - person ; 29.08.2016