gpt4 book ai didi

javascript - AngularJS - 忽略源映射的堆栈跟踪

转载 作者:IT王子 更新时间:2023-10-29 03:20:43 25 4
gpt4 key购买 nike

我已经编写了一个 AngularJS 应用程序,但事实证明调试它有点像噩梦。我正在使用 Grunt + uglify 来连接和缩小我的应用程序代码。它还会在缩小的 JS 文件旁边创建一个源映射。

当文件中存在 JS 错误时,源映射似乎可以正常工作,但在 AngularJS 应用程序之外。例如如果我在其中一个文件的顶部写入 console.log('a.b');,Chrome 调试器中记录的错误会显示原始文件的行 + 文件信息,而不是缩小后的文件一个。

当 Angular 自身运行的代码出现问题时(例如在 Controller 代码中),就会出现问题。我从 Angular 获得了一个很好的堆栈跟踪,但它只详细说明了缩小后的文件,而不是原始文件。

我能做些什么来让 Angular 确认源映射吗?

错误示例如下:

TypeError: Cannot call method 'getElement' of undefined
at Object.addMapControls (http://my-site/wp-content/plugins/my-maps/assets/js/app.min.js:1:2848)
at Object.g [as init] (http://my-site/wp-content/plugins/my-maps/assets/js/app.min.js:1:344)
at new a (http://my-site/wp-content/plugins/my-maps/assets/js/app.min.js:1:591)
at d (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.min.js:29:495)
at Object.instantiate (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.min.js:30:123)

最佳答案

拉里法克斯的 answer很好,但记录的功能有一个改进版本 in the same issue report :

.config(function($provide) {

// Fix sourcemaps
// @url https://github.com/angular/angular.js/issues/5217#issuecomment-50993513
$provide.decorator('$exceptionHandler', function($delegate) {
return function(exception, cause) {
$delegate(exception, cause);
setTimeout(function() {
throw exception;
});
};
});
})

这将生成两个堆栈跟踪,如 Andrew Magee noted :一个由 Angular 格式化,然后另一个由浏览器格式化。第二个跟踪将应用 sourcemaps。禁用重复项可能不是一个好主意,因为您可能有其他 Angular 模块也可以处理异常,这些异常可以在此之后通过委托(delegate)调用。

关于javascript - AngularJS - 忽略源映射的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com