Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调试角度_Javascript_Angularjs_Debugging - Fatal编程技术网

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