gpt4 book ai didi

angular - 如何在 Angular 错误上获得更好的堆栈跟踪

转载 作者:行者123 更新时间:2023-12-03 07:38:44 24 4
gpt4 key购买 nike

目前,当我在生产 Angular (v7) 应用程序中遇到错误时,我会收到这样的堆栈跟踪。但这几乎不可能从中获得任何有意义的信息。我怎样才能获得更好的堆栈跟踪,以便我可以缩小这个难以捉摸的错误的来源?现在,我在 prod 中遇到了这个错误,因为它从来没有发生在我的开发机器上,而且我不知道如何隔离它,因为堆栈跟踪对我来说几乎没有用。我习惯了像 C# 这样的语言,在那里你会得到一个非常简洁的堆栈跟踪,它为你提供了一个指向错误函数的映射。此堆栈跟踪没有意义。

TypeError: Cannot read property 'appendChild' of null
at create_dom_structure (eval at (:15:1), :1:16231)
at load_map (eval at (:15:1), :1:101028)
at Object.load (eval at (:15:1), :1:107834)
at eval (eval at (:15:1), :1:108251)
at t.invokeTask (https://mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8844)
at Object.onInvokeTask (https://mywebsite.com/main.25a9fda6ea42f4308b79.js:1:467756)
at t.invokeTask (https://mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8765)
at e.runTask (https://mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:4026)
at e.invokeTask (https://mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:9927)
at invoke (https://mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:9818)

我的错误处理程序:
export class AppErrorHandler extends ErrorHandler {

constructor(
private _http: Http,
private injector: Injector,
) {
super();
}

public handleError(error: any): void {
if (error.status === '401') {
alert('You are not logged in, please log in and come back!');
} else {
const router = this.injector.get(Router);

const reportOject = {
status: error.status,
name: error.name,
message: error.message,
httpErrorCode: error.httpErrorCode,
stack: error.stack,
url: location.href,
route: router.url,
};
this._http.post(`${Endpoint.APIRoot}Errors/AngularError`, reportOject)
.toPromise()
.catch((respError: any) => {
Utils.formatError(respError, `AppErrorHandler()`);
});
}
super.handleError(error);
}
}

最佳答案

通常 Javascript 堆栈跟踪更有用。不幸的是,在生产应用程序中,您通常会打开缩小功能,这就是为什么会出现如此难以理解的困惑情况。

如果您能负担得起更大的 Javascript 包,那么关闭缩小以在生产中获得更好的堆栈跟踪可能会很有用。

如何执行此操作会因您使用的 Angular CLI 版本而异。对于 v7 CLI:

在文件 angular.json 中,设置以下属性

{
...
"projects": {
"my-project": {
...
"architect": {
"build": {
...
"configurations": {
"production": {
"optimization": false,
"buildOptimizer": false,
...
}
...
}

this question 中的替代解决方案

关于angular - 如何在 Angular 错误上获得更好的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55171139/

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