背景
私たちは、書き換えによるプロジェクト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
が、ページを発見し、通常はオープン、および他の多くの要因は、当社の判断に干渉する。しかし、不適切な最終的な分析、あるいは調査方法。
要約してみてください
オンラインエラーコードの場合は、最初のソースコード内のエラーの場所を見つけ、エラーログを確認してください。
ログには有用な情報を提供していない場合は、この時点で、それはローカル、オンラインシミュレーションとデバッグ環境でのメインブランチに切り替えるべきです。
続いて、エラー原因を特定、削除大法を使用しています。
私はアン〜を望みます