Fix Docker build failure: lazy-initialize MinIO client
Build and Push Docker Image / build (push) Successful in 13m48s
Details
Build and Push Docker Image / build (push) Successful in 13m48s
Details
The production env var check in createMinioClient() was throwing during `next build` page data collection because MINIO_ACCESS_KEY/SECRET_KEY aren't available at Docker build time. Changed from eager module-level initialization to a lazy Proxy pattern that defers client creation to first actual use, while maintaining backward compatibility with all existing `minio.method()` call sites. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
699248e40b
commit
f038c95777
|
|
@ -1,6 +1,6 @@
|
|||
import * as Minio from 'minio'
|
||||
|
||||
// MinIO client singleton
|
||||
// MinIO client singleton (lazy-initialized to avoid build-time errors)
|
||||
const globalForMinio = globalThis as unknown as {
|
||||
minio: Minio.Client | undefined
|
||||
}
|
||||
|
|
@ -30,9 +30,24 @@ function createMinioClient(): Minio.Client {
|
|||
})
|
||||
}
|
||||
|
||||
export const minio = globalForMinio.minio ?? createMinioClient()
|
||||
/**
|
||||
* Get the MinIO client instance (lazy-initialized).
|
||||
* The client is only created on first access, not at module import time.
|
||||
* This prevents build-time errors when env vars are not available.
|
||||
*/
|
||||
export function getMinioClient(): Minio.Client {
|
||||
if (!globalForMinio.minio) {
|
||||
globalForMinio.minio = createMinioClient()
|
||||
}
|
||||
return globalForMinio.minio
|
||||
}
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') globalForMinio.minio = minio
|
||||
// Backward-compatible export — lazy getter via Proxy
|
||||
export const minio: Minio.Client = new Proxy({} as Minio.Client, {
|
||||
get(_target, prop, receiver) {
|
||||
return Reflect.get(getMinioClient(), prop, receiver)
|
||||
},
|
||||
})
|
||||
|
||||
// Default bucket name
|
||||
export const BUCKET_NAME = process.env.MINIO_BUCKET || 'mopc-files'
|
||||
|
|
|
|||
Loading…
Reference in New Issue