import { serve } from '@hono/node-server'; import { serveStatic } from '@hono/node-server/serve-static'; import { Hono } from 'hono'; import { cors } from 'hono/cors'; import dotenv from 'dotenv'; import vehiclesRouter from './routes/vehicles.js'; import mileageRouter from './routes/mileage/index.js'; import schedulingRouter from './routes/scheduling/index.js'; import energyRouter from './routes/energy/index.js'; import eleRouter from './routes/ele/index.js'; import { ensureSchedulingTables } from './routes/scheduling/db-schema.js'; import authRouter from './auth/login.js'; import { authMiddleware } from './auth/middleware.js'; dotenv.config(); const app = new Hono(); app.use('/api/*', cors()); // Auth 路由(不需要中间件) app.route('/api/auth', authRouter); // Auth 中间件(保护后续所有 /api/* 路由) app.use('/api/*', authMiddleware); app.route('/api/vehicles', vehiclesRouter); app.route('/api/mileage', mileageRouter); app.route('/api/scheduling', schedulingRouter); app.route('/api/energy', energyRouter); app.route('/api/ele', eleRouter); app.get('/api/health', (c) => c.json({ status: 'ok', time: new Date().toISOString() })); // Serve static files in production app.use('/*', serveStatic({ root: './dist' })); app.use('/*', serveStatic({ root: './dist', path: 'index.html' })); const port = Number(process.env.SERVER_PORT) || 3001; console.log(`Server starting on port ${port}...`); ensureSchedulingTables().catch(e => console.error('scheduling bootstrap error:', e)); serve({ fetch: app.fetch, port }, () => { console.log(`Server running at http://localhost:${port}`); });