← Angular コース
95. エラーメッセージの解剖 — NGコードとスタックトレース
Angularの実行時エラーには NG0100 のような固有コードが付き、番号帯でおおよその分類が分かります。NG01xx はテンプレートや変更検知まわり、NG02xx は依存性の注入(DI)まわりが代表例です。長いメッセージを全部読む前に、まずコードを見て「どの領域の問題か」に当たりを付けるのが解剖の第一歩です。
エラーの下に続くスタックトレースは、上から「エラーが起きた場所 → その呼び出し元」の順に並びます。大半の行は Angular 内部のファイルなので全部読む必要はなく、src/app 配下など「自分の書いたファイル名」が出ている行を探します。そこがエラーに至った自分のコードの入口で、実務ではこの行から調査を始めます。
初学者はメッセージの長さに圧倒されて、最初の1行すら読まずに閉じてしまいがちです。実は最初の1行とNGコードにほぼ答えがあります。angular.dev/errors/NG0100 のようにコードをURLに付ければ公式の解説と典型的な原因へ直接たどり着けるので、闇雲にエラー文全体で検索する前にまずここを引きましょう。
サンプルコード(フレームワーク環境が必要なため表示のみ)
// 実際のエラー表示を解剖してみる(コンソールに出る例)
//
// ERROR RuntimeError: NG0201: No provider found for _HttpClient!
// ^^^^^ ①最初の1行にほぼ答えがある
// NG0201 … エラーコード。NG02xx なので DI まわりの問題
// No provider … HttpClient を注入したいのに提供元が登録されていない
//
// at throwProviderNotFoundError (core.mjs:5643) ← Angular内部
// at getOrCreateInjectable (core.mjs:4110) ← Angular内部
// at UserList_Factory (user-list.ts:12) ← ②自分のファイル!
// ^^^^^ スタックトレースは src/app 配下の行だけ探せばよい
//
// ③コードで公式解説を引く:
// https://angular.dev/errors/NG0201 を開く
// → app.config.ts に provideHttpClient() を足すのが典型的な直し方
//
// 番号帯の代表例:
// NG01xx … テンプレート・変更検知(例: NG0100)
// NG02xx … 依存性の注入(例: NG0200 循環依存, NG0201 provider不足)
// NG8xxx … コンパイル時のテンプレートエラー(例: NG8001 未知のタグ)
サンプルコードで身につける(5本) →
学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。
公式ドキュメントで詳しく ↗