获取Angular控制器中抛出的异常中的原始文件名+行号?

时间:2014-07-30 21:30:42

标签: javascript angularjs

如果我在Angular控制器中出错,我会得到一个堆栈跟踪,如下所示:

TypeError: undefined is not a function
    at new <anonymous> (…/dist/script.js:854:5)
    at invoke (…/dist/base-script.js:13441:17)
    at Object.instantiate (…/dist/base-script.js:13452:23)
    at …/dist/base-script.js:16789:28
    at …/dist/base-script.js:16159:34
    at forEach (…/dist/base-script.js:9709:20)
    at nodeLinkFn (…/dist/base-script.js:16146:11)
    at compositeLinkFn (…/dist/base-script.js:15582:13)
    at publicLinkFn (…/dist/base-script.js:15477:30)
    at link (…/dist/base-script.js:30282:38) <div ng-include="activeTab" class="ng-scope"> 

script.jsscript-base.js是缩小的脚本。

如何确定导致问题的实际源代码?

请注意,我正在编译源地图,并且当&#34; native&#34;抛出错误(即,当Angular 拦截错误时,Chrome可以正确显示原始源代码行。)

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

看起来可以使用重新抛出错误的函数覆盖$exceptionHandler

angular.module('myapp', []).factory('$exceptionHandler', function($log) {
  return function (exception, cause) {
    if (cause) {
      $log.error('exception cause:', cause);
    }
    throw exception;
  };
});

这可能会产生其他意想不到的后果,但它肯定会使调试更容易。