Отладка Angular

Мне было интересно, когда Angular регистрирует ошибку, это куча тарабарщины, подобная этому:

Error: [ng:areq] Argument 'AppController' is not a function, got undefined
http://errors.angularjs.org/1.2.23/ng/areq?p0=AppController&p1=not%20a%20function%2C%20got%20undefined
    at http://localhost/NAME/vendors/angular/angular.js:78:12
    at assertArg (http://localhost/NAME/vendors/angular/angular.js:1509:11)
    at assertArgFn (http://localhost/NAME/vendors/angular/angular.js:1519:3)
    at http://localhost/NAME/vendors/angular/angular.js:7271:9
    at http://localhost/NAME/vendors/angular/angular.js:6663:34
    at forEach (http://localhost/NAME/vendors/angular/angular.js:332:20)
    at nodeLinkFn (http://localhost/NAME/vendors/angular/angular.js:6650:11)
    at compositeLinkFn (http://localhost/NAME/vendors/angular/angular.js:6098:13)
    at compositeLinkFn (http://localhost/NAME/vendors/angular/angular.js:6101:13)
    at compositeLinkFn (http://localhost/NAME/vendors/angular/angular.js:6101:13) 

Как узнать, какая строка кода MY (а не Angular исходный код) вызвала ошибку? Добавление контрольных точек или Batarang не помогает.

Изменить

У меня нет проблем с этой конкретной ошибкой. Бывают случаи, когда Angular регистрирует номер строки, например Controller.js:1183:48, и случаи, когда это не так. В чем разница? И в последнем случае, как узнать строку ошибок MY?

Ответы

Ответ 1

  • Если проблема является ошибкой во время выполнения внутри одного из ваших контроллеров, вы получите номер строки.

  • Если это проблема, интерпретирующая что-то встроенное {{ like.this() }} или проблема с выражением в директиве (ex: ng-repeat='foo in undefinedBar') или любое другое выражение, не выполняемое внутри тега или ссылки script, тогда вы 'll получить строку кода из angular рамки, где впервые была обнаружена ошибка (обычно либо сама директива, либо ядро).

  • Если один из ваших контроллеров просто не анализирует из-за неправильного синтаксиса, он скажет вам, что он даже не может загрузить модуль. Это также применимо, если на самом деле существует проблема с настройкой вашего приложения, но я предполагаю, что этот вопрос относится к тем временам, когда вы пытаетесь найти труднодоступную ошибку в контроллере или представлении.

Обычно, когда я испытываю # 2 (наиболее распространенный источник разочарования), я ищу подсказки относительно того, какой тип ошибки он (возможно, сборник не был определен, если он говорит мне, что "длина" была undefined, например). Обычно проблема связана либо с плохим синтаксисом, либо с моими моделями контроллеров, которые не были в состоянии, которое я ожидал.

Ответ 2

Вы можете нажать на: -

http://errors.angularjs.org/1.2.23/ng/areq?p0=AppController&p1=not%20a%20function%2C%20got%20undefined

Эта ссылка (2-я строка) ошибки. Он откроет описание ошибки на веб-сайте angular js.

Например, в вашем случае ошибка:

Argument 'AppController' is not a function, got undefined

Это означает, что у вас есть опечатка в вашем контроллере или вы вообще не создали контроллер. Вы можете увидеть эту ошибку, как только вы нажмете на эту ссылку.

Изменить: Если есть ошибка, относящаяся к вашему коду, как что-то undefined. Вы также получаете ссылку на свою кодовую строку. Ниже приведен пример такой ошибки, где переменная undefined.

TypeError: Cannot read property 'filetype' of undefined
    at Object.fn (http://localhost:8080/techpedia/js/Controller.js:1183:48)
    at k.$digest (http://localhost:8080/techpedia/js/angular.min.js:109:403)
    at k.$apply (http://localhost:8080/techpedia/js/angular.min.js:112:398)
    at http://localhost:8080/techpedia/js/angular.min.js:18:270
    at Object.d [as invoke] (http://localhost:8080/techpedia/js/angular.min.js:35:36)
    at c (http://localhost:8080/techpedia/js/angular.min.js:18:178)
    at fc (http://localhost:8080/techpedia/js/angular.min.js:18:387)
    at Xc (http://localhost:8080/techpedia/js/angular.min.js:17:415)
    at HTMLDocument.<anonymous> (http://localhost:8080/techpedia/js/angular.min.js:214:144)
    at l (http://localhost:8080/techpedia/js/foundation.min.js:18:16937) 

Ссылка укажет номер строки в вашем коде.

http://localhost:8080/techpedia/js/Controller.js:1183:48 

Ответ 3

Убедитесь, что вы правильно определили AppController. Поиск AppController в ваших источниках

Ответ 4

Основываясь на этом, ответ - нет. Это одна из проблем, которые angularjs пытается исправить при разработке javascript.

Их ответ - это структура, которая предлагает или заставляет разработчиков кодировать легко проверяемый javascript.