[バグ]隠されたピットの一部のモデルで-console

背景

私たちは、書き換えによるプロジェクトconsole、オブジェクト上で実現ログレポート機能方法を次のコードスニペットをインターセプトします:

Class Logger() {
  debug() {},
  info() {},
  warn() {},
  ...
}

const logger = new Logger();
logger.hook = function(target) {
  ['debug','info','warn','error'].forEach(key => {
    const old = target[key];
    target[key] = function(...args) {
      old && old(...args);
      logger[key](...args);
    };
  });
};

logger.hook(console);

しかし、携帯電話(iPhone 5S 9.3.1)のごく一部で、ページを使用するconsole印刷コンテンツは、障害ページのレンダリングにつながる、それは背景には何も送信しません。

一定

調査の後で問題を発見しましたold && old(...args)我々は書き換えるためconsoleの実行で、その結果、オブジェクトのメソッドをconsole.warn()時間方法は、対応するコンテキストを失いました。に変更するには:

old && old.call(target, ...args);

感情

調査の後、トラブルシューティングプロセス後の単文で。しかし、実際には、調査の過程は離れて一日を過ごすことでした。振り返ってみると、多くの時間は、無効無駄。再生...

これは最近のバージョンを更新していない品目に比較的長い時間です。

6.28フィードバックホームユーザーは、「申し訳ありませんが、我々は少し問題が表示されます。」ブランク、ポップ・プロンプトを開き、私はすぐに自分の携帯電話、バグの再現でテスト。

ステップ1:ログをチェックしてください

問題がオンラインになっているので、最初の反応は、エラーログを確認することであるが、システムは、対応するコンテンツを見つけていません。ページのコードを確認するために進んで、何の変化と明らかな問題はありません。

ステップ2:灰色の環境を確認してください

私たちのプロジェクトでは、グレーと正式な環境のコードはほぼ同じであるので、私は灰色の環境下で試験、ページが正常に開くことができます。

第三段階:ローカル環境の公式を開きます。

この時点で、私は通常、残念ながら、ページがまだ開いでき、ローカル環境に再びそれを実行し、その後、メインブランチに切り替えて、一貫性のないグレースケール環境とコードの正式な環境であると思います。

ステップ4:同期グレー、正式な環境コード

コードグレー環境、同じと正式な環境コードの展開を削除し、空白のページを開いて、プロンプトポップ「申し訳ありませんが、我々は少し問題が表示されます。」

ステップ5:コードの「デバッグ」行

上記の手順を経て、私の心は崩壊です。

この時点で、私たちは私たちがエラー内容を表示助けるためにポップで、コードを変換し、その後、明らかにエラーの内容の詳細をお知りになりたいです。悪い考えのために、得られた情報は、十分に詳細ではありません。リリース - - 変更の経シリーズでライン上に、我々は最終的に場所のコードに誤りを見つけます。

残念ながら、この位置およびエラーなしのコード。

ステップ6:コンソールを削除します

ポイントして、デバッグのソースコードは再び、無関係な内容を削除し、そして最終的には実際のエラー位置を検索します。

そこには書かれた手順は、このようなオンライン環境やカナダのように、ではないerudaが、ページを発見し、通常はオープン、および他の多くの要因は、当社の判断に干渉する。しかし、不適切な最終的な分析、あるいは調査方法。

要約してみてください

オンラインエラーコードの場合は、最初のソースコード内のエラーの場所を見つけ、エラーログを確認してください。

ログには有用な情報を提供していない場合は、この時点で、それはローカル、オンラインシミュレーションとデバッグ環境でのメインブランチに切り替えるべきです。

続いて、エラー原因を特定、削除大法を使用しています。

私はアン〜を望みます

おすすめ

転載: www.cnblogs.com/fayin/p/11114557.html