如果我在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.js
和script-base.js
是缩小的脚本。
如何确定导致问题的实际源代码?
请注意,我正在编译源地图,并且当&#34; native&#34;抛出错误(即,当Angular 不拦截错误时,Chrome可以正确显示原始源代码行。)
答案 0 :(得分:1)
这似乎是Chrome限制:
答案 1 :(得分:0)
看起来可以使用重新抛出错误的函数覆盖$exceptionHandler
:
angular.module('myapp', []).factory('$exceptionHandler', function($log) {
return function (exception, cause) {
if (cause) {
$log.error('exception cause:', cause);
}
throw exception;
};
});
这可能会产生其他意想不到的后果,但它肯定会使调试更容易。