#!/usr/bin/env node import http from 'http'; import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const PORT = 5173; const HOST = '0.0.0.0'; // Types MIME const mimeTypes = { '.html': 'text/html', '.js': 'text/javascript', '.css': 'text/css', '.json': 'application/json', '.png': 'image/png', '.jpg': 'image/jpg', '.gif': 'image/gif', '.svg': 'image/svg+xml', '.ico': 'image/x-icon' }; const server = http.createServer((req, res) => { console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`); let filePath = '.' + req.url; if (filePath === './') { filePath = './index.html'; } const extname = String(path.extname(filePath)).toLowerCase(); const mimeType = mimeTypes[extname] || 'application/octet-stream'; fs.readFile(filePath, (error, content) => { if (error) { if (error.code === 'ENOENT') { // Fichier non trouvé, servir index.html pour SPA fs.readFile('./index.html', (error, content) => { if (error) { res.writeHead(404); res.end('File not found'); } else { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(content, 'utf-8'); } }); } else { res.writeHead(500); res.end('Server error: ' + error.code); } } else { res.writeHead(200, { 'Content-Type': mimeType }); res.end(content, 'utf-8'); } }); }); server.listen(PORT, HOST, () => { console.log(`🚀 Serveur 4NK_IA_front démarré sur http://${HOST}:${PORT}`); console.log(`📁 Servant les fichiers depuis: ${process.cwd()}`); console.log(`💡 Appuyez sur Ctrl+C pour arrêter`); });