81 lines
2.0 KiB
JavaScript
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
|