我正在使用装饰器来更改$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;
答案 0 :(得分:2)
Google Chrome提供了一个调试程序,可帮助JS程序员找到错误和有问题的代码。
随着JavaScript应用程序的复杂性增加,开发人员需要 强大的调试工具,帮助快速发现原因 发布并有效地解决它。 Chrome DevTools包括许多 有用的工具,可以帮助调试JavaScript减少痛苦。
您可以尝试在任何地方放置一些断点(尝试检测有问题的线/方法)。
请参阅此处的官方文档:https://developer.chrome.com/devtools/docs/javascript-debugging
许多插件,例如 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计划的状态(控制器实例,变量名称/值和范围)。
AngularJS $ log服务提供了一个简单的资源,可以在浏览器控制台中显示变量的状态(如果存在)。
简单的日志服务。默认实现安全地写入 消息进入浏览器的控制台(如果存在)。
此服务的主要目的是简化调试和 故障排除。
默认是记录调试消息。您可以使用 ng。$ logProvider#debugEnabled来改变它。 AngularJS $日志服务 帮助您调试程序。
从我个人的角度来看,一个好的AngularJS调试包括以上所有解决方案的组合。
我希望它对你有用。