Vite/React アプリケーションを GitHub Pages にデプロイすることはエキサイティングなマイルストーンですが、このプロセスでは、特に画像やアセットを扱う場合、予期せぬ課題が発生することがあります。このブログ投稿では、初期導入から一般的な問題のトラブルシューティング、効果的な解決策の発見までのプロセス全体を説明します。
初心者でも経験者でも、このガイドはよくある落とし穴を回避し、すべてのアセットが適切にレンダリングされた状態で Vite/React アプリを正常にデプロイするのに役立ちます。
本題に入る前に、次のものが揃っていることを確認してください:
まず、Vite/React アプリケーションが適切に初期化され、ローカルホスト上で動作することを確認します。次のように基本的な Vite プロジェクトを作成できます:
npm create vite@latest
依存関係のインストール:
npm install
プロジェクトをローカルで実行して、すべてが機能することを確認します:
npm run dev
プロジェクトの準備ができたら、GitHub リポジトリにプッシュします。
GitHub Pages は、アプリケーションが特定のベース URL (通常はリポジトリ名) から提供されることを想定しています。これを反映するように vite.config.js ファイルを更新します:
import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ base: process.env.NODE_ENV === 'production' ? '/your-repo-name/' : '/', plugins: [react()], })
base オプションにより、アプリケーションがデプロイ時に正しいベース パスを使用することが保証されます。
展開を処理するには、gh-pages パッケージをインストールする必要があります。
npm install gh-pages --save-dev
package.json に次のスクリプトを追加して、展開プロセスを自動化します:
"scripts": { "predeploy": "npm run build", "deploy": "gh-pages -d dist" }
デプロイメントを実行します:
npm run deploy
この時点で、プロジェクトは https://
展開後、アプリが空のページを読み込むことに気づくかもしれません。これは多くの場合、ルーティングの問題が原因で発生します。デフォルトでは、react-router-dom の BrowserRouter が使用され、サーバー側のルーティングに依存しますが、GitHub Pages は静的ファイルを提供し、クライアント側のルートを処理しません。
解決策: HashRouter を使用する
これを解決するには、index.js または main.jsx ファイルで BrowserRouter から HashRouter に切り替えます。
import { HashRouter } from 'react-router-dom'; createRoot(document.getElementById('root')).render();
HashRouter は、URL でハッシュ記号 (#) を使用してナビゲーション状態を追跡し、GitHub Pages が 404 を返さずにさまざまなルートを適切に提供できるようにします。
空白のページの問題を解決した後、直面する可能性のある別の問題は、アプリがホームページで動作しているものの、他のルートに移動すると、特に /blogs や /projects などのルートに直接アクセスすると 404 エラーが表示されることです。
これは、GitHub Pages がindex.html ファイルの提供方法しか認識しておらず、React Router によって管理されるルートを認識しないために発生します。
解決策: GitHub ページの設定で 404 エラーを処理する
これを修正するには、public/ フォルダーに 404.html ファイルを作成する必要があります。このファイルにより、GitHub Pages が認識しないルートに対して Index.html ファイルを提供し、React Router がルーティングを処理できるようになります:
最も一般的な展開の問題の 1 つは、イメージが正しく読み込まれないことです。 localhost では正常に動作しますが、GitHub Pages にデプロイした後、画像リンクが壊れていることに気づく場合があります。
たとえば、コンポーネント内で次のような画像を参照できます:
問題: 間違った画像パス
ここでの問題は、アプリがサブディレクトリ (例: /your-repo-name/) にデプロイされている場合、絶対パス (/ で始まる) がうまく機能しないことです。 GitHub Pages は、https://
解決策: BASE_URL
を使用します。これを修正するには、すべての画像を Public/Images に移動します。これはオプションですが、そうすることを強くお勧めします。環境に基づいて BASE_URL を画像パスの先頭に動的に追加します:
const BASE_URL = import.meta.env.BASE_URL;
これにより、開発 (localhost) と運用環境 (GitHub Pages) の両方で正しいパスが使用されるようになります。
ルーティングとイメージ パスの修正を実装した後、アプリケーションを再構築して再デプロイします:
npm run build npm run deploy
これで、Vite/React アプリケーションが完全にデプロイされ、すべての画像が正しくレンダリングされ、すべてのルートが適切に処理されるはずです。
要約すれば:
これらの手順により、Vite/React アプリは GitHub Pages 上で稼働し、スムーズに機能するようになります。コーディングとデプロイを楽しんでください!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3