47 lines
1.6 KiB
JavaScript
47 lines
1.6 KiB
JavaScript
async function testHydrationFix() {
|
|
console.log('🧪 測試 Hydration 錯誤修復...\n');
|
|
|
|
try {
|
|
// 測試管理員頁面載入
|
|
console.log('1. 測試管理員頁面載入...');
|
|
const response = await fetch('http://localhost:3000/admin');
|
|
|
|
if (response.ok) {
|
|
console.log('✅ 管理員頁面載入成功');
|
|
console.log('狀態碼:', response.status);
|
|
|
|
// 檢查頁面內容是否包含修復後的邏輯
|
|
const pageContent = await response.text();
|
|
|
|
// 檢查是否包含客戶端狀態檢查
|
|
if (pageContent.includes('isClient')) {
|
|
console.log('✅ 客戶端狀態檢查已添加');
|
|
} else {
|
|
console.log('❌ 客戶端狀態檢查可能未生效');
|
|
}
|
|
|
|
// 檢查是否移除了直接的 window 檢查
|
|
if (!pageContent.includes('typeof window !== \'undefined\'')) {
|
|
console.log('✅ 直接的 window 檢查已移除');
|
|
} else {
|
|
console.log('⚠️ 可能還有直接的 window 檢查');
|
|
}
|
|
|
|
} else {
|
|
console.log('❌ 管理員頁面載入失敗:', response.status);
|
|
}
|
|
|
|
console.log('\n🎉 Hydration 錯誤修復測試完成!');
|
|
console.log('\n📋 修復內容:');
|
|
console.log('✅ 添加了 isClient 狀態來處理客戶端渲染');
|
|
console.log('✅ 移除了直接的 typeof window 檢查');
|
|
console.log('✅ 使用 useEffect 確保客戶端狀態正確設置');
|
|
console.log('✅ 防止服務器端和客戶端渲染不匹配');
|
|
|
|
} catch (error) {
|
|
console.error('❌ 測試過程中發生錯誤:', error);
|
|
}
|
|
}
|
|
|
|
testHydrationFix();
|