fix: error koneksi Prisma - DATABASE_URL tidak loaded di
production - Tambah validasi DATABASE_URL di prisma.ts - Tambah copy .env file di postbuild script ### No Issue
This commit is contained in:
@@ -38,4 +38,27 @@ if (fs.existsSync(prismaClientSrc)) {
|
||||
console.warn('⚠ @prisma/client not found, skipping...');
|
||||
}
|
||||
|
||||
// Copy .env file jika ada (untuk production)
|
||||
const envSrc = path.join(__dirname, '../.env');
|
||||
const envDest = path.join(standaloneDir, '.env');
|
||||
if (fs.existsSync(envSrc)) {
|
||||
fs.copyFileSync(envSrc, envDest);
|
||||
console.log('✓ .env file copied to standalone output');
|
||||
} else {
|
||||
console.warn('⚠ .env file not found, skipping...');
|
||||
console.warn(' Pastikan DATABASE_URL di-set di system environment server!');
|
||||
}
|
||||
|
||||
// Copy .env-local file jika ada (opsional)
|
||||
const envLocalSrc = path.join(__dirname, '../.env-local');
|
||||
const envLocalDest = path.join(standaloneDir, '.env-local');
|
||||
if (fs.existsSync(envLocalSrc)) {
|
||||
fs.copyFileSync(envLocalSrc, envLocalDest);
|
||||
console.log('✓ .env-local file copied to standalone output');
|
||||
}
|
||||
|
||||
console.log('✅ Postbuild script completed!');
|
||||
console.log('');
|
||||
console.log('📋 Penting untuk Production:');
|
||||
console.log(' - Pastikan DATABASE_URL tersedia di environment server, ATAU');
|
||||
console.log(' - File .env sudah ter-copy ke /app/.env di server');
|
||||
|
||||
@@ -8,6 +8,24 @@ declare global {
|
||||
|
||||
let prisma: PrismaClient;
|
||||
|
||||
// Validasi DATABASE_URL sebelum inisialisasi
|
||||
if (!process.env.DATABASE_URL) {
|
||||
console.error('❌ ERROR: DATABASE_URL tidak ditemukan di environment variables!');
|
||||
console.error('');
|
||||
console.error('Current working directory:', process.cwd());
|
||||
console.error('Available environment variables:', Object.keys(process.env).sort().join(', '));
|
||||
console.error('');
|
||||
console.error('Solusi:');
|
||||
console.error(' 1. Pastikan file .env ada dan berisi DATABASE_URL, ATAU');
|
||||
console.error(' 2. Set DATABASE_URL di system environment:');
|
||||
console.error(' export DATABASE_URL="postgresql://user:pass@host:port/dbname"');
|
||||
console.error(' 3. Jika menggunakan systemd service, tambahkan di file service:');
|
||||
console.error(' [Service]');
|
||||
console.error(' Environment=DATABASE_URL=postgresql://...');
|
||||
console.error('');
|
||||
throw new Error('DATABASE_URL is required but not found in environment variables');
|
||||
}
|
||||
|
||||
if (process.env.NODE_ENV === "production") {
|
||||
prisma = new PrismaClient({
|
||||
// Reduce logging in production to improve performance
|
||||
|
||||
Reference in New Issue
Block a user