Javascript 调试角度
我一直在想,无论什么时候,这都是一堆类似于这样的胡言乱语:Javascript 调试角度,javascript,angularjs,debugging,Javascript,Angularjs,Debugging,我一直在想,无论什么时候,这都是一堆类似于这样的胡言乱语: 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/a
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)
我如何知道是哪一行我的代码(不是角度源代码)触发了错误?添加断点或Batarang没有帮助
编辑
我对这个特定的错误没有问题。有些情况下,angular会记录一个行号,比如说Controller.js:1183:48
,有些情况下,angular不会记录行号有什么区别?在后一种情况下,如何查找我的错误行?您可以单击:-
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
这意味着你的控制器有一个输入错误,或者你根本没有做控制器。单击该链接后,您可以看到此错误
编辑:
如果您的代码出现错误,比如未定义的错误。您还可以获得一个链接来访问代码行。以下是此类错误的示例,其中变量未定义
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)
验证是否正确定义了AppController。在你的资料中搜索AppController,基于此,答案是你没有。这是angularjs在开发javascript时试图解决的问题之一 他们的答案是提供或强制开发人员使用易于测试的javascript编写代码的框架
{{like.this()}}
的内容有问题,或者指令中的表达式(例如:ng repeat='foo in undefinedBar'
)有问题,或者脚本标记或引用中没有运行的任何其他表达式有问题,然后,您将从第一次遇到错误的角度框架(通常是指令本身或核心)中获得代码行通常,当我遇到#2(最常见的挫折来源)时,我会寻找关于它是什么类型错误的线索(例如,如果一个集合告诉我“长度”未定义,则可能没有定义)。通常问题与语法错误或我的控制器型号没有处于我预期的状态有关。谢谢,我已经做到了,但它仍然没有指向代码中的行号。有办法追踪吗?我已经相应地编辑了我的答案,你的控制器丢失了。要么是打字错误,要么是你没有把文件包括进去。发布一些代码,这会让事情变得更清楚。你也可以点击第三行来查看代码。我知道是什么导致了这个错误。我在问一个一般性的问题。第三行指向angular源代码,而不是我的代码指向该行angular代码的地方。你也会在错误中得到它。我将更新答案以向您展示一个这样的示例。感谢更新。在这些情况下,我很容易找到错误线。像我上面贴的那样的案例呢?有什么区别?为什么这些案例不能提供一条线索?在这些情况下我是如何发现的?那么你是如何找到问题的根源的呢?我不想花几个小时去寻找一个与我当前问题无关的单个字符错误。此答案无法回答问题中最重要的部分。不知道具体错误(问题与列出的具体错误无关)使此问题无法完全回答。很多时候,基于堆栈跟踪确定代码行是不可能的,这通常是因为angular无法报告内联表达式中断的html视图行。但在这些情况下,它应该非常明显,您可以在几段代码中找出问题所在。在调试中使用未缩小的AngularJS版本也会增加更详细的日志记录,这通常是有帮助的。此外,我还要补充一点,显而易见的解决方案是确保在#1的模式中出现尽可能多的错误。您可以通过限制复杂内联表达式的使用,而不是使用控制器函数来执行任何数据转换来实现这一点。然后,您只需确保语法对于ng repeat和ng options等内容是正确的。如果您的视图太大,实际上需要“几个小时”才能跟踪,我建议通过添加更多结构来减少问题的规模,但这些是我希望OP已经了解的基本编程原则。
http://localhost:8080/techpedia/js/Controller.js:1183:48