コンソールで報告される JavaScript エラーを修正する
この記事では、コンソールで報告される JavaScript エラーの解決を示すために、6 つのデモ ページについて説明します。
JavaScript エラーを修正する
コンソールでの最初のエクスペリエンスは、スクリプトのエラーである可能性があります。
デモ ページ: コンソール ツールで JavaScript エラーが報告されました
コンソール ツールで報告されたデモ Web ページの JavaScript エラーを新しいウィンドウまたはタブで開きます。
Web ページ内の任意の場所を右クリックし、[ 検査] を選択します。 または、 F12 キーを押します。 Web ページの横に DevTools が開きます。
アクティビティ バーの [コンソール] ボタンをクリックします。 DevTools では、 コンソール によってエラーの詳細が表示されます。
コンソールの多くのエラー メッセージには、[Web 上でこのメッセージを検索する] ボタンがあり、虫眼鏡として表示されます。 詳細については、「 Web でコンソール エラー メッセージ文字列を検索する」を参照してください。
このエラー メッセージの情報は、エラーがファイルの
error.html
16 行目にあることを示しています。コンソールの
error.html:16
エラー メッセージの右側にあるリンクをクリック します。 [ソース] ツールが開き、コード行が強調表示され、エラーが表示されます。スクリプトは、ドキュメント内の最初
h2
の要素を取得し、その周囲に赤い境界線を描画しようとします。 ただし、要素が存在しないためh2
、スクリプトは失敗します。
ネットワークの問題を見つけてデバッグする
コンソールでは、ネットワーク エラーも報告されます。
デモ ページ: コンソールで報告されたネットワーク エラー
コンソール で報告されたデモ Web ページのネットワーク エラー を新しいウィンドウまたはタブで開きます。
Web ページ内の任意の場所を右クリックし、[ 検査] を選択します。 または、 F12 キーを押します。 Web ページの横に DevTools が開きます。
テーブルには が表示
loading
されますが、データが取得されないため、Web ページには何も変更されません。 コンソールで、次の 2 つのエラーが発生しました。HTTP メソッドで
GET
始まり、URI が続くネットワーク エラー。Uncaught (in promise) TypeError: data.forEach is not a function
エラー。
エラーが発生した Web ページとコード行へのリンクをクリックして、[ソース] ツールを開きます。 つまり、コンソールでリンクを
network-error.html:40
クリック します。[ソース] ツールが開きます。 問題のあるコード行が強調表示され、その後に (
x
) ボタンがerror
続きます。エラー (
x
) ボタンをクリックします。 メッセージFailed to load resource: the server responded with a status of 404 ()
が表示されます。このエラーは、要求された URL が見つからないことを通知します。
次のように ネットワーク ツールを開きます。 コンソールを開き、エラーに関連付けられている URI をクリックします。
リソースが読み込まれないと、コンソールにエラーの HTTP 状態コードが表示されます。
ネットワーク ツールには、失敗した要求に関する詳細情報が表示されます。
ネットワーク ツールのヘッダーを調べて、より多くの分析情報を取得します。
問題は何でしたか? という単語
repos
の後の要求された URI で、2 つのスラッシュ文字 (//
) が発生します。ソース ツールを開き、26 行目を検査 します 。 末尾のスラッシュ文字 (
/
) は、ベース URI の末尾に発生します。 ソース ツールには、次のエラーを含むコード行が表示されます。
コンソールにエラーがない場合に結果のページを表示する
次に、コンソールにエラーがない場合に結果のページを確認 します。
デモ ページ: コンソールで報告されたネットワーク エラーを修正しました
デモ Web ページを開く 新しいウィンドウまたはタブ でコンソールで報告されたネットワーク エラーを修正 しました。
エラーのない例では、GitHub から情報が読み込まれて表示されます。
デモ ページ: コンソールと UI でのネットワーク エラーレポート
以前のユーザー エクスペリエンスを回避するには、防御的なコーディング手法を使用します。 次のように、コードでエラーがキャッチされ、各エラーが コンソールに表示されていることを確認します。
新しいウィンドウまたはタブ で、コンソールと UI で デモ Web ページのネットワーク エラー レポートを開きます。
Web ページ内の任意の場所を右クリックし、[ 検査] を選択します。 または、 F12 キーを押します。 Web ページの横に DevTools が開きます。
サンプル Web ページでは、次のプラクティスを示します。
問題が発生したことを示す UI をユーザーに提供します。
コンソールで、コードからネットワーク エラーに関する役立つ情報を提供します。
この例では、エラーをキャッチして報告します。
デモの次のコードでは、 メソッド (具体的には行) を
handleErrors
使用してエラーをthrow Error
キャッチして報告します。const handleErrors = (response) => { if (!response.ok) { let message = 'Could not load the information' document.querySelector('tbody').innerHTML = ` <tr><td colspan=3>Error ${message}</td></tr> `; throw Error(response.status + ' ' + response.statusText); } return response; };
コンソールでエラーとトレースを作成する
前のセクションの throw Error
例に加えて、 コンソールでさまざまなエラーを作成し、問題をトレースすることもできます。
デモ ページ: コンソールでのエラー レポートとアサーションの作成
作成された 2 つのエラー メッセージを コンソールに表示するには:
新しいウィンドウまたはタブ で、コンソールでエラー レポートとアサーションを作成する デモ ページを開きます。
Web ページ内の任意の場所を右クリックし、[ 検査] を選択します。 または、 F12 キーを押します。 Web ページの横に DevTools が開きます。
コンソールにエラー メッセージが表示されます。
デモ ページでは、次のコードを使用します。
function first(name) { second(name); } function second(name) { third(name); } function third(name) { if (!name) { console.error(`Name isn't defined :(`) } else { console.assert( name.length <= 8, `"${name} is not less than eight letters"` ); } } first(); first('Console'); first('Microsoft Edge Canary');
連続して相互に要求する 3 つの関数があります。
first()
second()
third()
各関数は、他方に
name
引数を送信します。 関数ではthird()
、引数が存在しname
、存在しない場合は、名前が定義されていないエラーをログに記録チェック。 が定義されている場合name
は、 メソッドをassert()
使用して、引数の長さが 8 文字未満の場合にname
チェックします。次のパラメーターを使用して
first()
、関数を 3 回要求します。関数内
third()
のメソッドをconsole.error()
トリガーする引数はありません。引数が存在し
first()
、8 文字より短いためname
、関数のパラメーターとしての用語Console
はエラーを引き起こしません。パラメーターが 8 文字より長いため、関数の
first()
パラメーターとしてのフレーズMicrosoft Edge Canary
を使用するとconsole.assert()
、メソッドでエラーが報告されます。
このデモでは、 メソッドを
console.assert()
使用して条件付きエラー レポートを作成します。 次の 2 つの例では同じ結果が得られますが、1 つには追加if{}
のステートメントが必要です。let x = 20; if (x < 40) { console.error(`${x} is too small`) }; console.assert(x >= 40, `${x} is too small`)
コードの 2 行目と 3 行目で同じテストが実行されます。 アサーションは負の結果を記録する必要があるため、
- ケースで の
x < 40
テストを行if
います。 - アサーションを
x >= 40
テストします。
デモ ページ: コンソールでのトレースの作成
別の関数を要求する関数がわからない場合は、 メソッドを console.trace()
使用して、現在の関数にアクセスするために要求された関数を追跡します。
コンソールにトレースを表示するには:
新しいウィンドウまたはタブでデモ ページ [コンソールでのトレースの作成 ] を開きます。
Web ページ内の任意の場所を右クリックし、[ 検査] を選択します。 または、 F12 キーを押します。 Web ページの横に DevTools が開きます。
このページでは、次のコードを使用します。
function here() {there()} function there() {everywhere()} function everywhere() { console.trace(); } here(); there();
結果は、 という名前
there()
の を表示here()
するトレースで、everywhere()
2 番目の例では という名前everywhere()
を表示します。コンソールで生成されるトレースを次に示 します。
関連項目
- コンソールの概要 - コンソール を一般的に使用してエラー メッセージを表示および解決します。