Reactアプリをデプロイした後、白い画面が表示されることは非常に一般的な問題です。この問題は、ユーザーにとって非常にフラストレーションを引き起こす可能性があります。
この記事では、Reactアプリが白画面になる原因と、その解決法について詳しく解説します。特に、確認すべき5つのポイントに焦点を当てます。
1. JavaScriptファイルの読み込み失敗
原因
Reactアプリは、JavaScriptを使用してコンテンツを表示します。したがって、JavaScriptファイルが正しく読み込まれないと、白い画面が表示されます。これは、404エラーやネットワークの問題が原因で発生することがあります。
解決法
ブラウザの開発者ツールを開き、コンソールタブでエラーメッセージを確認します。特に、JavaScriptファイルの読み込みに関するエラーを探します。
以下は、package.json
にhomepage
フィールドを追加する例です。これにより、アプリがサブディレクトリにデプロイされる場合でも、正しいパスでファイルを読み込むことができます。
{
"name": "my-react-app",
"version": "1.0.0",
"homepage": "/my/react/app",
...
}
2. JavaScriptエラーの発生
原因
JavaScriptエラーが発生すると、アプリのレンダリングが中断され、白い画面が表示されることがあります。特に、未定義の変数やオブジェクトのプロパティにアクセスしようとした場合に発生します。
解決法
開発者ツールのコンソールでエラーメッセージを確認し、エラーの原因を特定します。エラーが発生している行を修正することで、問題を解決できます。
以下は、オプショナルチェイニングを使用して、未定義の変数にアクセスする際のエラーを回避する例です。
const person = undefined;
// TypeErrorを防ぐためにオプショナルチェイニングを使用
const name = person?.name; // personがundefinedの場合、nameはundefinedになります
3. CORSポリシーの問題
原因
APIからデータを取得する際に、CORS(Cross-Origin Resource Sharing)ポリシーが原因でリクエストがブロックされることがあります。これにより、アプリが正しく動作せず、白い画面が表示されることがあります。
解決法
バックエンドのCORS設定を確認し、必要に応じて修正します。特に、フロントエンドのドメインを許可リストに追加する必要があります。
以下は、Express.jsを使用してCORSを設定する例です。
const express = require('express');
const cors = require('cors');
const app = express();
// CORSを有効にする
app.use(cors({
origin: 'http://localhost:3000' // フロントエンドのURLを指定
}));
app.get('/api/data', (req, res) => {
res.json({ message: 'Hello World' });
});
app.listen(5000, () => {
console.log('Server is running on port 5000');
});
4. ビルド設定の問題
原因
Reactアプリのビルド設定が不適切な場合、特にpublicPath
やbase
の設定が間違っていると、アプリが正しく読み込まれないことがあります。
解決法
vite.config.js
やwebpack.config.js
の設定を確認し、正しいパスを指定します。
以下は、Viteを使用したビルド設定の例です。
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
base: '/my/react/app/', // 正しいベースパスを指定
plugins: [react()],
});
5. ブラウザのキャッシュの問題
原因
ブラウザのキャッシュが原因で、古いバージョンのファイルが読み込まれることがあります。これにより、アプリが正しく表示されないことがあります。
解決法
ブラウザのキャッシュをクリアし、再度アプリを読み込むことで問題を解決できます。また、デプロイ後にキャッシュを無効にするための設定を行うことも重要です。
以下は、HTTPヘッダーでキャッシュを無効にする設定の例です。
app.use((req, res, next) => {
res.set('Cache-Control', 'no-store');
next();
});
まとめ
Reactアプリが白画面になる原因とその解決法について、確認すべき5つのポイントを解説しました。これらのポイントを確認することで、問題を迅速に特定し、解決することができます。
- JavaScriptファイルの読み込み失敗
- 開発者ツールでエラーを確認し、
package.json
のhomepage
を設定する。
- 開発者ツールでエラーを確認し、
- JavaScriptエラーの発生
- コンソールでエラーを確認し、オプショナルチェイニングを使用してエラーを回避する。
- CORSポリシーの問題
- バックエンドのCORS設定を確認し、フロントエンドのURLを許可リストに追加する。
- ビルド設定の問題
vite.config.js
やwebpack.config.js
の設定を確認し、正しいパスを指定する。
- ブラウザのキャッシュの問題
- キャッシュをクリアし、HTTPヘッダーでキャッシュを無効にする。
これらの手順を実行することで、Reactアプリの白画面問題を解決し、スムーズなユーザー体験を提供できるようになります。