55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
const http = require('http');
|
|
|
|
console.log(`[${new Date().toISOString()}] Frontend health check starting...`);
|
|
|
|
const options = {
|
|
hostname: 'localhost',
|
|
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(); |