const http = require('http'); console.log(`[${new Date().toISOString()}] Frontend health check starting...`); const options = { hostname: '127.0.0.1', port: 3000, path: '/', method: 'GET', timeout: 8000 }; console.log(`[${new Date().toISOString()}] Checking: http://${options.hostname}:${options.port}${options.path}`); const req = http.request(options, (res) => { console.log(`[${new Date().toISOString()}] Response status: ${res.statusCode}`); console.log(`[${new Date().toISOString()}] Response headers:`, JSON.stringify(res.headers, null, 2)); let data = ''; res.on('data', chunk => { data += chunk; }); res.on('end', () => { console.log(`[${new Date().toISOString()}] Response body length: ${data.length} bytes`); console.log(`[${new Date().toISOString()}] Response snippet:`, data.substring(0, 200)); // Accept any 2xx or 3xx status code (React dev server might redirect) if (res.statusCode >= 200 && res.statusCode < 400) { console.log(`[${new Date().toISOString()}] Health check PASSED`); process.exit(0); } else { console.log(`[${new Date().toISOString()}] Health check FAILED - status: ${res.statusCode}`); process.exit(1); } }); }); req.on('error', (err) => { console.log(`[${new Date().toISOString()}] Health check ERROR:`, err.message); console.log(`[${new Date().toISOString()}] Error code:`, err.code); console.log(`[${new Date().toISOString()}] Error syscall:`, err.syscall); console.log(`[${new Date().toISOString()}] Error address:`, err.address); console.log(`[${new Date().toISOString()}] Error port:`, err.port); process.exit(1); }); req.on('timeout', () => { console.log(`[${new Date().toISOString()}] Health check TIMEOUT after ${options.timeout}ms`); req.destroy(); process.exit(1); }); req.setTimeout(options.timeout); req.end();