我有以下错误处理功能:
handleError(error) {
this.loading = false;
console.log(error);
let errorMessage;
if (error.error && error.error.detail) {
errorMessage = error.error.detail;
} else {
errorMessage = error.status + ': ' + error.statusText;
}
this._snackbar.open("Error: " + errorMessage, 'OK');
}
以下是我如何使用它:
this._apiService.stop(this.element.id).subscribe(element => {
this.element = element;
}, error => {
this.handleError(error);
});
它收到API错误并尝试显示其详细信息(如果提供),或仅显示状态文本。
此代码在开发环境(ng serve
)中完美运行,但在生产中不起作用(ng build --prod
)。
我注意到在制作中如何解释错误细节有所不同,请参见下面的屏幕截图:
您可以看到,在开发过程中,error.error
是一个以detail
为参数的对象。在生产中,error.error
是一个对象作为字符串
为什么会这样?如果重要的话,Django Rest Framework会提供错误。
是否有参数定义了角度将如何解析嵌套对象?
修改
我注意到,ng build --prod
在我的本地计算机上工作正常(Windows 10)。问题出在CentOS服务器上
也许这是npm设置的一些问题?