web-dev-qa-db-ja.com

ブラウザコンソールで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) {
        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) });
}

このサービスを使用して次のようにAPIを呼び出そうとすると、

this.httpService.HttpPost(url, data).subscribe(
    (res: any) => 
    {
       // do something
    },
    (error: any) => 
    {
        if (error.status === 409)
            // do something
        else if (error.status === 401)
            // do something
        else
           // do something
    }
);

resステータスコードが200以外の場合(401、403、409など)、これらの種類の迷惑なエラーはコンソールのzone.jsによって生成されます。 (APIの部分URLを非表示にして申し訳ありません)

enter image description here

とにかく、zone.jsを停止して、コンソールでそのような種類の迷惑なエラーを生成し、例を使用してグーグルで解決策を試しましたが、まだ見つかりませんでした。ありがとう!

これをmain.tsで使用しようとしましたが、うまくいきませんでした:

window.console.error = function() {};

編集:スタックトレースを追加:

enter image description here

10
Haruka

ネットワークリクエストが失敗すると、Chromeはコンソールにエラーを表示します。エラーには、失敗したURL、受信したHTTPステータス、リクエストのオリジンが表示されます。通常、Angularでは、ユーザーからの何らかのアクションに応答してHTTPリクエストを作成します。Angularは、ゾーンを使用してそれらのアクションをキャプチャするため、ほとんどすべてのエラーはzone.jsで発生します。スタック全体を確認するとただし、トレースでは、独自のコードを呼び出した後にエラーが発生することがわかります。zone.js内のコードが、そのコードを呼び出すだけです。

したがって、コンソールでリクエストエラーを表示しない唯一の方法は、chromeコンソールを無視してそれらを無視することですが、プログラムでそれを行う方法はないと思います。

window.onerrorについて考えていると思いますが、これは理論的にはキャッチされていない例外をすべてキャプチャします。ただし、これらのネットワークエラーはJavaScriptの例外ではないため、キャプチャすることはできません。

console.errorは置き換えません。これを行うと、コードに含まれている可能性のある真のエラーを表示できなくなります。とにかく、前述のように、この場合はChromeコンソールに書き込んでいる人であり、これらのエラーを非表示にする唯一の方法は、すでに述べたように、それらをフィルタリングすることです(ただし、機能するのはもちろんあなたのために)。

7
Oscar Paz

開発モードでは、次の行を追加して、ゾーンエラーをsrc/environments/environment.tsにインポートできます。

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

次に、ゾーン関連のエラースタックトレースのほとんどがなくなります。

6
jiali passion