如何在AngularJS中获得更多的堆栈跟踪

时间:2014-07-15 13:38:27

标签: angularjs exception

我正在使用装饰器来更改$exceptionHandler行为,将日志发送到服务器。我的问题是异常的stackatrace似乎没用,只显示堆栈的一部分。例如:

  

语法错误:令牌'undefined'不是NaN列的主表达式   表达式[表达式]。

at Error (native)
at throwError (http://localhost:8080/angular/angular.js:6674:62)
at primary (http://localhost:8080/angular/angular.js:6918:9)
at unary (http://localhost:8080/angular/angular.js:6900:14)
at multiplicative (http://localhost:8080/angular/angular.js:6883:16)
at additive (http://localhost:8080/angular/angular.js:6874:16)
at relational (http://localhost:8080/angular/angular.js:6865:16)
at equality (http://localhost:8080/angular/angular.js:6856:16)
at logicalAND (http://localhost:8080/angular/angular.js:6847:16)
at logicalOR (http://localhost:8080/angular/angular.js:6839:41)

有没有办法配置AngularJS来显示更多堆栈?如果我查看Chrome控制台,我可以看到更多堆栈,并获取文件名,但不在异常处理程序中。

即使我更改Error限制,我也看不到原始文件:

Error.stackTraceLimit = Infinity;

1 个答案:

答案 0 :(得分:2)

1使用调试器,而不是Chrome控制台

Google Chrome提供了一个调试程序,可帮助JS程序员找到错误和有问题的代码。

  

随着JavaScript应用程序的复杂性增加,开发人员需要   强大的调试工具,帮助快速发现原因   发布并有效地解决它。 Chrome DevTools包括许多   有用的工具,可以帮助调试JavaScript减少痛苦。

您可以尝试在任何地方放置一些断点(尝试检测有问题的线/方法)。

请参阅此处的官方文档:https://developer.chrome.com/devtools/docs/javascript-debugging

2使用浏览器扩展程序

许多插件,例如 ng-inspector https://chrome.google.com/webstore/detail/ng-inspector-for-angularj/aadgmnobpdmgmigaicncghmmoeflnamj?hl=en)或 AngularJS Batarang https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk?hl=en)可帮助您打印AngularJS计划的状态(控制器实例,变量名称/值和范围)。

3使用$ log服务(console.log包装器)

AngularJS $ log服务提供了一个简单的资源,可以在浏览器控制台中显示变量的状态(如果存在)。

  

简单的日志服务。默认实现安全地写入   消息进入浏览器的控制台(如果存在)。

     

此服务的主要目的是简化调试和   故障排除。

     

默认是记录调试消息。您可以使用   ng。$ logProvider#debugEnabled来改变它。 AngularJS $日志服务   帮助您调试程序。

从我个人的角度来看,一个好的AngularJS调试包括以上所有解决方案的组合。

我希望它对你有用。