const checkEnvVariables = require("./check-env-variables") checkEnvVariables() /** * Medusa Cloud-related environment variables */ const S3_HOSTNAME = process.env.MEDUSA_CLOUD_S3_HOSTNAME const S3_PATHNAME = process.env.MEDUSA_CLOUD_S3_PATHNAME /** * Hosts that may serve product/category images through next/image: the * Medusa backend itself (local file provider serves uploads from /static) plus * any extra hosts listed in NEXT_PUBLIC_IMAGE_HOSTS (comma-separated, e.g. an * ngrok or CDN hostname). Without this, uploaded images are blocked with * "hostname is not configured under images". */ const extraImagePatterns = [] const imageHosts = [ process.env.MEDUSA_BACKEND_URL, ...(process.env.NEXT_PUBLIC_IMAGE_HOSTS || "").split(","), ] for (const raw of imageHosts) { const value = raw && raw.trim() if (!value) continue try { const url = new URL(value.includes("://") ? value : `https://${value}`) extraImagePatterns.push({ protocol: url.protocol.replace(":", ""), hostname: url.hostname, ...(url.port ? { port: url.port } : {}), }) } catch { // ignore malformed entries } } /** * @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, logging: { fetches: { fullUrl: true, }, }, images: { remotePatterns: [ { protocol: "http", hostname: "localhost", }, { protocol: "https", hostname: "medusa-public-images.s3.eu-west-1.amazonaws.com", }, { protocol: "https", hostname: "medusa-server-testing.s3.amazonaws.com", }, { protocol: "https", hostname: "medusa-server-testing.s3.us-east-1.amazonaws.com", }, ...extraImagePatterns, ...(S3_HOSTNAME && S3_PATHNAME ? [ { protocol: "https", hostname: S3_HOSTNAME, pathname: S3_PATHNAME, }, ] : []), ], }, } module.exports = nextConfig