File size: 1,465 Bytes
464b662
 
fe2ddce
464b662
fe2ddce
 
 
464b662
fe2ddce
464b662
 
fe2ddce
 
464b662
 
 
fe2ddce
 
464b662
 
fe2ddce
 
464b662
 
fe2ddce
 
 
 
 
 
 
 
 
 
 
 
 
464b662
 
fe2ddce
464b662
 
fe2ddce
 
464b662
 
 
fe2ddce
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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();