调试Angular

Luc*_*cia 15 javascript debugging angularjs

我一直想知道,每当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) 
Run Code Online (Sandbox Code Playgroud)

我怎么知道MY代码的哪一行(不是角度源代码)触发了错误?添加断点或Batarang没有帮助.

编辑

我没有遇到这个特定错误的问题.有些情况下,角度会记录一个行号,比如说Controller.js:1183:48不会记录行号.有什么区别?在后一种情况下,我如何找出我的错误行?

Dav*_*ave 11

  1. 如果问题是其中一个控制器内的运行时错误,您将获得行号.

  2. 如果解释内联中的内容{{ like.this() }}或指令中的表达式问题(例如ng-repeat='foo in undefinedBar'),或者没有在脚本标记或引用中运行的任何其他表达式,那么您将从角度框架中获取错误的代码行第一次遇到(通常是指令本身或核心).

  3. 如果您的某个控制器由于语法不正确而无法解析,则会告诉您它甚至无法加载模块.如果您的应用程序设置确实存在问题,这也适用,但我认为这个问题适用于您尝试在控制器或视图中追踪难以发现的错误的时间.

通常当我遇到#2(最常见的挫折源)时,我会寻找有关它是什么类型的错误的线索(例如,如果它告诉我"长度"未定义,则可能没有定义集合).通常问题与错误的语法或我的控制器模型没有处于我期望的状态有关.

  • 那么你如何找到问题的根源呢?我不想花费数小时寻找最终与我当前问题无关的单个字符错误。这个答案没有回答问题最重要的部分。 (2认同)