import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { Logger } from '@nestjs/common'; /** * Penanganan kesalahan global untuk menjaga stabilitas server */ process.on('uncaughtException', (err) => { console.error('[UncaughtException]:', err); }); process.on('unhandledRejection', (reason, promise) => { console.error('[UnhandledRejection] pada:', promise, 'alasan:', reason); }); async function bootstrap() { const logger = new Logger('Bootstrap'); try { const app = await NestFactory.create(AppModule); // Mengaktifkan CORS untuk mengizinkan permintaan dari Google Apps Script app.enableCors(); // Konfigurasi port dinamis sesuai environment Hugging Face const port = process.env.PORT || 7860; /** * Mengatur aplikasi agar mendengarkan pada host '0.0.0.0'. * Langkah ini wajib dilakukan dalam lingkungan Docker/Hugging Face * agar server dapat menerima koneksi eksternal. */ await app.listen(port, '0.0.0.0'); logger.log(`Aplikasi NestJS berhasil dijalankan pada port ${port}`); logger.log(`Akses eksternal tersedia melalui antarmuka 0.0.0.0`); } catch (err: any) { if (err.code === 'EADDRINUSE') { logger.error(`Kegagalan: Port ${7860} telah digunakan oleh proses lain.`); process.exit(1); } else { logger.error('Kegagalan saat inisialisasi server:', err); process.exit(1); } } } bootstrap();