データが表示されない

空白のページ、データの欠落、空を返すAPIルートのデバッグ方法。

「データが表示されない」とはどういう状態?

ページはエラーなしで読み込まれるが、何かが欠けている:

  • リストが空
  • カードにコンテンツがない
  • グラフにデータポイントがない
  • テーブルに行がない
  • APIが[]またはnullを返す

データフローの理解

データはチェーンを通って流れます。どこかのリンクが壊れると、データが表示されません:

データフローチェーンtext
データベース(Neon上のPostgreSQL)
  -> APIルートのSQLクエリ(app/api/...)
    -> ページまたはコンポーネントのfetch()呼び出し
      -> JSXでレンダリング

データが欠けている場合、これらのステップのどこかが壊れています。

ステップ1:ブラウザのネットワークタブを確認

ネットワークタブはAPIが正確に何を返しているか表示します:

APIレスポンスの確認方法text
1. Chrome DevToolsを開く(F12 または Cmd+Option+I)
2. 「Network」タブをクリック
3. ページをリロード
4. APIコールを探す(「Fetch/XHR」でフィルタ)
5. リクエストをクリックしてResponseを確認
6. レスポンスにデータがあるか、空かを確認

これで問題がどこにあるかがわかります:

ネットワークタブの表示問題の場所
APIが[](空の配列)を返すサーバー / データベースクエリ
APIがデータを返すがページが空白フロントエンドのレンダリングコード
APIコールが500エラーを返すサーバーエラー(サーバーサイドエラーを参照)
APIコールが行われていないフロントエンドコードがAPIを呼び出していない

ステップ2:APIルートをデバッグ

APIが空のデータを返す場合、クエリが間違っている可能性があります:

空のAPIレスポンスをデバッグ
Claudeプロンプト
my-app-name: ダッシュボードページが読み込まれますがデータが表示されません。リストが完全に空です。 ブラウザのネットワークタブを確認したところ、/api/dashboardへのAPIコールが空の配列を返しています: [] APIルートとデータベースクエリを確認して、データが返されない原因を見つけてください。

ステップ3:フロントエンドをデバッグ

APIがデータを返しているのにページが空白の場合:

APIがデータを返すがページが空白
Claudeプロンプト
my-app-name: ネットワークタブを確認したところ、/api/itemsのAPIは正しくデータを返しています。しかしページには何も表示されません。 アイテムリストをレンダリングするコンポーネントを確認して、APIレスポンスを正しく読み取っているか確認してください。

データが実際に表示される場所

データは以下の環境でのみ表示されます:

  • PRプレビュー環境(分離されたNeonデータベースブランチ)
  • 本番環境(ライブアプリ)

アプリはローカルで動かさないので、「ローカルのデータ」を確認することはありません。変更をプッシュし、PRを開き、PRコメントに投稿されるプレビューURLでテストします。プレビュー環境には実際の(分離された)データベースが付くので、そこで本当の挙動が確認できます。

プレビューのAPIを直接叩くbash
# PRコメントにあるプレビューURLに置き換える
curl https://your-app-pr-123.up.railway.app/api/your-route

よくある原因

  • APIエンドポイントURLの間違い — fetchのURLのタイプミス
  • データベースクエリが間違ったカラムを返す — SELECTに必要なフィールドが含まれていない
  • データ形式の不一致 — APIは{ data: [...] }を返すがコンポーネントは[...]を期待
  • エラーハンドリングの欠如 — fetchがサイレントに失敗しデータが表示されない
  • 環境変数が未設定 — RailwayでDATABASE_URLが欠落(デプロイ設定を確認)

クイズ

Quiz

ページはエラーなしで読み込まれますが、リストが空です。APIは[]を返しています。問題はどこにありますか?