Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在浏览器控制台中停止zone.js生成的错误?_Angular_Typescript_Zone.js - Fatal编程技术网

Angular 如何在浏览器控制台中停止zone.js生成的错误?

Angular 如何在浏览器控制台中停止zone.js生成的错误?,angular,typescript,zone.js,Angular,Typescript,Zone.js,这是我在httpService.ts中的代码 public HttpPost(url: string, data: any): Observable<Response> { let headers = new Headers(); let reqOpts = new RequestOptions(); headers.append(AUTH_CONTENT_TYPE_KEY, AUTH_CONTENT_TYPE); if (this.Token) {

这是我在httpService.ts中的代码

public HttpPost(url: string, data: any): Observable<Response> 
{
    let headers = new Headers();
    let reqOpts = new RequestOptions();
    headers.append(AUTH_CONTENT_TYPE_KEY, AUTH_CONTENT_TYPE);
    if (this.Token) {
        headers.append(AUTH_HEADER_KEY, AUTH_TOKEN_PREFIX + this.Token);
    }
    reqOpts.headers = headers;
    return this.http.post(url, data, reqOpts).timeout(30000).map((res: Response) => res)
        .catch((err: Response) => { return Observable.throw(err) });
}
如果res状态代码不是200,比如401、403或409,那么这些恼人的错误是由console中的zone.js生成的。(很抱歉隐藏API的部分url)

所以,无论如何,有没有停止zone.js在控制台中生成这样一种恼人的错误,试图用谷歌搜索一个带有示例的解决方案,但还没有找到,谢谢

尝试在main.ts中使用此选项,但未成功:

window.console.error = function() {};
编辑:添加堆栈跟踪:


当网络请求失败时,Chrome会在控制台中显示错误。该错误显示失败的url、已接收的HTTP状态以及请求的来源。通常,在Angular中,您正在发出HTTP请求以响应用户的某些操作。Angular使用区域捕获这些操作,因此,几乎所有错误都起源于
zone.js
。但是,如果检查整个堆栈跟踪,您将看到错误发生在调用您自己的代码之后。这只是
zone.js
中的代码,最终调用的是该代码

所以,不在控制台中看到请求错误的唯一方法是将您的chrome控制台配置为忽略它们,但我认为没有一种编程方式可以做到这一点

我确信您正在考虑
window.onerror
,它在理论上捕获任何未捕获的异常。但是这些网络错误不是JavaScript异常,所以您将无法捕获它们


我不会更换
控制台。错误
。因为如果您这样做,您将无法看到代码中可能存在的真正错误。无论如何,如上所述,在这种情况下,Chrome正在写入控制台,而隐藏这些错误的唯一方法是,正如我已经说过的,过滤它们(当然,这只对您有效)。

在开发模式下,您可以添加以下行以导入
src/environments/environment.ts

import `zone.js/dist/zone-error`;

然后,大部分与区域相关的错误堆栈跟踪将消失。

请提供给定的堆栈跟踪(单击“POST”之前的箭头)。好的,我添加了堆栈跟踪以获得答案。事实上,若res代码不是200,那个么控制台中并没有任何功能问题,只有这些恼人的错误。我考虑过如果API正常工作,让后端给出200,并且只在res body中给出真实的错误代码,那么错误不会生成,但是后端可能会有很多代码更改,或者可能会有一些自定义错误处理程序。尽管如此,这对这种情况没有帮助。此外,在导入语句中,反勾号应替换为单引号/双引号。在生产模式下,注释ITA仅将导入添加到
environment.ts
-而不是
environment.prod.ts
import `zone.js/dist/zone-error`;