# 環境變量配置指南 ## 概述 為了讓應用在不同環境中使用不同的域名,我們已經將硬編碼的 localhost URL 改為環境變量配置。 ## 配置方式 ### 1. 創建環境變量文件 在項目根目錄創建 `.env.local` 文件: ```bash # 應用配置 NEXT_PUBLIC_APP_URL=http://localhost:12024 NEXT_PUBLIC_APP_NAME=AI 智能評審系統 # 資料庫配置 DB_HOST=localhost DB_PORT=3306 DB_NAME=ai_scoring DB_USER=root DB_PASSWORD= # AI 配置 GEMINI_API_KEY=your_gemini_api_key_here ``` ### 2. 不同環境的配置 #### 開發環境 (`.env.local`) ```bash NEXT_PUBLIC_APP_URL=http://localhost:12024 NEXT_PUBLIC_APP_NAME=AI 智能評審系統 (開發版) ``` #### 測試環境 (`.env.test`) ```bash NEXT_PUBLIC_APP_URL=https://test.yourdomain.com NEXT_PUBLIC_APP_NAME=AI 智能評審系統 (測試版) ``` #### 生產環境 (`.env.production`) ```bash NEXT_PUBLIC_APP_URL=https://yourdomain.com NEXT_PUBLIC_APP_NAME=AI 智能評審系統 ``` ## 技術實現 ### 🔧 配置工具類 (`lib/config.ts`) 創建了統一的配置管理工具: ```typescript // 獲取應用基礎 URL export function getAppUrl(): string { // 在客戶端使用 window.location.origin if (typeof window !== 'undefined') { return window.location.origin } // 在服務端使用環境變量 return process.env.NEXT_PUBLIC_APP_URL || 'http://localhost:12024' } // 生成分享連結 export function generateShareUrl(evaluationId: string): string { const baseUrl = getAppUrl() return `${baseUrl}/results?id=${evaluationId}` } ``` ### 📱 分享組件更新 修改了 `components/share-modal.tsx` 來使用配置工具: ```typescript import { generateShareUrl, getCurrentUrl } from "@/lib/config" // 生成分享連結 const shareUrl = evaluationId ? generateShareUrl(evaluationId) : getCurrentUrl() ``` ## 使用說明 ### 🚀 開發環境設置 1. **複製環境變量範例** ```bash cp env.example .env.local ``` 2. **修改配置** 編輯 `.env.local` 文件,設置您的開發環境 URL: ```bash NEXT_PUBLIC_APP_URL=http://localhost:12024 ``` 3. **重啟開發服務器** ```bash npm run dev ``` ### 🌐 部署到生產環境 1. **設置生產環境變量** 在您的部署平台(如 Vercel、Netlify 等)設置環境變量: ```bash NEXT_PUBLIC_APP_URL=https://yourdomain.com ``` 2. **自動部署** 環境變量會在部署時自動生效 ## 功能特色 ### ✨ 智能 URL 生成 - **客戶端**:自動使用當前域名 - **服務端**:使用環境變量配置 - **回退機制**:如果環境變量未設置,使用 localhost:12024 ### 🔄 環境適配 - **開發環境**:使用 localhost - **測試環境**:使用測試域名 - **生產環境**:使用正式域名 ### 📱 分享功能 - **QR Code**:自動使用正確的域名 - **分享連結**:包含正確的完整 URL - **郵件分享**:使用配置的域名 ## 注意事項 ### ⚠️ 重要提醒 1. **環境變量命名** - 客戶端可用的變量必須以 `NEXT_PUBLIC_` 開頭 - 只有 `NEXT_PUBLIC_` 前綴的變量才能在客戶端代碼中使用 2. **安全考慮** - 不要在環境變量中存儲敏感信息 - API 密鑰等敏感數據使用服務端專用變量 3. **文件忽略** - `.env.local` 文件已在 `.gitignore` 中,不會被提交到版本控制 ## 測試驗證 ### ✅ 功能測試 1. **開發環境測試** ```bash npm run dev # 訪問 http://localhost:12024/results # 測試分享功能,確認 URL 正確 ``` 2. **生產環境測試** ```bash npm run build npm run start # 測試分享功能,確認使用生產域名 ``` ### 🔍 驗證方法 - 檢查分享連結是否使用正確的域名 - 驗證 QR Code 是否包含正確的 URL - 測試郵件分享是否使用正確的域名 ## 故障排除 ### 🐛 常見問題 1. **環境變量不生效** - 確認變量名以 `NEXT_PUBLIC_` 開頭 - 重啟開發服務器 - 檢查 `.env.local` 文件位置 2. **分享連結錯誤** - 檢查 `NEXT_PUBLIC_APP_URL` 是否正確設置 - 確認 URL 格式正確(包含 http:// 或 https://) 3. **部署後 URL 不正確** - 在部署平台設置環境變量 - 確認變量名稱和值正確 ## 結論 通過環境變量配置,分享功能現在可以在不同環境中使用正確的域名,提供更好的靈活性和可維護性。無論是在開發、測試還是生產環境,都能確保分享連結使用正確的 URL。