fix: resolve sitemap build error caused by invalid Date values

- Replace new Date(b.created) with toSafeDate() helper to guard against
  invalid date strings from blog API responses
- Use a single NOW constant instead of new Date() per entry to avoid
  serialization issues during static generation
- Remove unused imports (cityData, DOMAIN_CONFIG, etc.)
- Add CLAUDE.md with project architecture and development guidance

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
hamed
2026-06-05 21:47:42 +03:30
co-authored by Claude Sonnet 4.6
parent 35408b059a
commit ec536bfc32
2 changed files with 147 additions and 27 deletions
+23 -27
View File
@@ -1,39 +1,35 @@
import { headers } from 'next/headers';
import cityData from '../data/city.json';
import specialtyData from '../data/specialties.json';
import {
DOMAIN_CONFIG,
isMainDomain,
createSitemapUrl,
createSitemapEntry,
limitArray,
getBaseUrl
} from '../utils/sitemap';
import { getBaseUrl } from '../utils/sitemap';
function toSafeDate(value) {
if (!value) return new Date();
const d = new Date(value);
return isNaN(d.getTime()) ? new Date() : d;
}
const MAIN_DOMAIN = 'nobat724.com';
function getCurrentDomain() {
try {
const headersList = headers();
const host = headersList.get('host');
return host || DOMAIN_CONFIG.MAIN_DOMAIN;
} catch (error) {
console.warn('Headers not available during static generation, using main domain');
return DOMAIN_CONFIG.MAIN_DOMAIN;
return host || MAIN_DOMAIN;
} catch {
return MAIN_DOMAIN;
}
}
function getCityByDomain(domain) {
return cityData.find(city => city.domain === domain);
}
const NOW = new Date();
function getStaticPages(baseUrl) {
return [
{ url: baseUrl, lastModified: new Date(), changeFrequency: 'daily', priority: 1 },
{ url: `${baseUrl}/about-us`, lastModified: new Date(), changeFrequency: 'monthly', priority: 0.8 },
{ url: `${baseUrl}/contact-us`, lastModified: new Date(), changeFrequency: 'monthly', priority: 0.8 },
{ url: `${baseUrl}/blogs`, lastModified: new Date(), changeFrequency: 'weekly', priority: 0.9 },
{ url: `${baseUrl}/doctors`, lastModified: new Date(), changeFrequency: 'daily', priority: 0.9 },
{ url: `${baseUrl}/clinics`, lastModified: new Date(), changeFrequency: 'daily', priority: 0.9 },
{ url: `${baseUrl}/specialties`, lastModified: new Date(), changeFrequency: 'weekly', priority: 0.9 },
{ url: baseUrl, lastModified: NOW, changeFrequency: 'daily', priority: 1 },
{ url: `${baseUrl}/about-us`, lastModified: NOW, changeFrequency: 'monthly', priority: 0.8 },
{ url: `${baseUrl}/contact-us`, lastModified: NOW, changeFrequency: 'monthly', priority: 0.8 },
{ url: `${baseUrl}/blogs`, lastModified: NOW, changeFrequency: 'weekly', priority: 0.9 },
{ url: `${baseUrl}/doctors`, lastModified: NOW, changeFrequency: 'daily', priority: 0.9 },
{ url: `${baseUrl}/clinics`, lastModified: NOW, changeFrequency: 'daily', priority: 0.9 },
{ url: `${baseUrl}/specialties`, lastModified: NOW, changeFrequency: 'weekly', priority: 0.9 },
];
}
@@ -52,7 +48,7 @@ async function getDoctorUrls(baseUrl) {
.filter((d) => d?.uuid)
.map((d) => ({
url: `${baseUrl}/doctor/${d.uuid}`,
lastModified: new Date(),
lastModified: NOW,
changeFrequency: 'weekly',
priority: 0.8,
}));
@@ -76,7 +72,7 @@ async function getClinicUrls(baseUrl) {
.filter((c) => c?.uuid)
.map((c) => ({
url: `${baseUrl}/clinic/${c.uuid}`,
lastModified: new Date(),
lastModified: NOW,
changeFrequency: 'weekly',
priority: 0.7,
}));
@@ -100,7 +96,7 @@ async function getBlogUrls(baseUrl) {
.filter((b) => b?.slug || b?.uuid)
.map((b) => ({
url: `${baseUrl}/blog/${b.slug || b.uuid}`,
lastModified: b.created ? new Date(b.created) : new Date(),
lastModified: toSafeDate(b.created),
changeFrequency: 'monthly',
priority: 0.6,
}));