HooStore-UI/next.config.js
2026-10-27 15:09:07 +07:00

81 lines
2.0 KiB
JavaScript

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