import 'dotenv/config'; import minioClient from './src/lib/minio'; async function diagnose() { console.log('šŸ” Starting Enhanced MinIO Diagnosis (with dotenv)...'); const logError = (context: string, err: any) => { console.error(`\nāŒ ${context}`); console.error('--- Error Details ---'); console.error(`Message: ${err.message || 'No message'}`); if (err.code) console.error(`Code: ${err.code}`); if (err.$response && err.$response.statusCode) console.error(`Status Code: ${err.$response.statusCode}`); // MinIO S3 errors often have these properties if (err.amzId2) console.error(`AmzId2: ${err.amzId2}`); console.error('----------------------'); }; try { // 1. Test Connection & List Buckets console.log('1. Attempting to list buckets...'); const buckets = await minioClient.listBuckets(); console.log('āœ… Success! Found buckets:', buckets.map(b => b.name)); } catch (err: any) { logError('Failed to list buckets', err); } try { // 2. Test specific bucket 'ecom-images' const targetBucket = 'ecom-images'; console.log(`\n2. Checking bucket "${targetBucket}"...`); const exists = await minioClient.bucketExists(targetBucket); console.log(`āœ… Bucket "${targetBucket}" exists: ${exists}`); if (exists) { console.log(`3. Attempting to upload a test file to "${targetBucket}"...`); const testFile = Buffer.from('test content'); await minioClient.putObject(targetBucket, 'diag-test.txt', testFile); console.log('āœ… Success! Uploaded diag-test.txt'); console.log('4. Attempting to delete the test file...'); await minioClient.removeObject(targetBucket, 'diag-test.txt'); console.log('āœ… Success! Deleted diag-test.txt'); } else { console.error(`āŒ Error: Bucket "${targetBucket}" does not exist.`); } } catch (err: any) { logError('Failed during bucket/file operations', err); } } diagnose();