调试AngularJS的更好方法是什么?

时间:2015-01-06 18:38:31

标签: angularjs exception-handling

昨天我花了大约4个小时试图追踪AngularJS中的错误。

我最终发现的是我的指令有一个可选参数,我有一段代码试图为这个参数赋值,这会抛出极其无用的角度误差。

错误类似于:

Error: [$compile:nonassign] Expression 'undefined' used with directive 'testDirective' is non-assignable!
http://errors.angularjs.org/1.3.7/$compile/nonassign?p0=undefined&p1=testDirective
minErr/<@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:63:12
nodeLinkFn/</parentSet<@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:7652:1
parentValueWatch@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:7665:23
regularInterceptedExpression@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:12831:16
$RootScopeProvider/this.$get</Scope.prototype.$digest@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:14215:34
$RootScopeProvider/this.$get</Scope.prototype.$apply@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:14486:13
ngEventHandler/<@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:22945:17
createEventHandler/eventHandler@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:3009:9

正如您所看到的,它告诉我导致问题的指令,但没有关于特定行#或语句导致它的原因。

有没有更好的方法来确定导致此错误的行而不注释代码和反复试验?

我创建了一个说明问题的plunker:

http://plnkr.co/edit/zxPegBlAxUKdewdmA6Oc?p=preview

1 个答案:

答案 0 :(得分:1)

您无法获得它所发生的确切行号,但是如果您转到错误链接,那么就有:

http://errors.angularjs.org/1.3.7/$compile/nonassign?p0=undefined&p1=testDirective

它可能会对它可能是什么有所了解。似乎它确实提到你使用不正确(第三个错误说没有提供绑定)