Skip to content

Commit 779d100

Browse files
committed
fix(prerendering): prefer runtime site url validation
Fixes harlan-zw/nuxt-seo#288
1 parent 6ef8dcd commit 779d100

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/prerender.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { mkdir, writeFile } from 'node:fs/promises'
22
import { join } from 'node:path'
33
import { withBase } from 'ufo'
4-
import { assertSiteConfig } from 'nuxt-site-config-kit'
54
import { useNuxt } from '@nuxt/kit'
65
import type { Nuxt } from '@nuxt/schema'
76
import type { Nitro, PrerenderRoute } from 'nitropack'
@@ -59,9 +58,6 @@ export function setupPrerenderHandler(_options: { runtimeConfig: ModuleRuntimeCo
5958
let prerenderer: Nitro
6059
nitro.hooks.hook('prerender:init', async (_prerenderer: Nitro) => {
6160
prerenderer = _prerenderer
62-
assertSiteConfig('@nuxtjs/sitemap', {
63-
url: 'Required to generate absolute canonical URLs for your sitemap.',
64-
}, { throwError: false })
6561
})
6662
nitro.hooks.hook('prerender:generate', async (route) => {
6763
const html = route.contents

src/runtime/nitro/sitemap/nitro.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { getQuery, setHeader } from 'h3'
1+
import { getQuery, setHeader, createError } from 'h3'
22
import type { H3Event } from 'h3'
33
import { fixSlashes } from 'site-config-stack/urls'
44
import { defu } from 'defu'
@@ -10,7 +10,7 @@ import type {
1010
SitemapDefinition,
1111
SitemapRenderCtx,
1212
} from '../../types'
13-
import { mergeOnKey, splitForLocales } from '../../utils-pure'
13+
import { logger, mergeOnKey, splitForLocales } from '../../utils-pure'
1414
import { createNitroRouteRuleMatcher } from '../kit'
1515
import { buildSitemapUrls, urlsToXml } from './builder/sitemap'
1616
import { normaliseEntry } from './urlset/normalise'
@@ -37,6 +37,18 @@ export function useNitroUrlResolvers(e: H3Event): NitroUrlResolvers {
3737
export async function createSitemap(event: H3Event, definition: SitemapDefinition, runtimeConfig: ModuleRuntimeConfig) {
3838
const { sitemapName } = definition
3939
const nitro = useNitroApp()
40+
if (import.meta.prerender) {
41+
const config = useSiteConfig(event)
42+
if (!config.url && !nitro._sitemapWarned) {
43+
nitro._sitemapWarned = true
44+
logger.error('Sitemap Site URL missing!')
45+
logger.info('To fix this please add `{ site: { url: \'site.com\' } }` to your Nuxt config or a `NUXT_PUBLIC_SITE_URL=site.com` to your .env. Learn more at https://nuxtseo.com/site-config/getting-started/how-it-works')
46+
throw new createError({
47+
statusMessage: 'You must provide a site URL to prerender a sitemap.',
48+
statusCode: 500,
49+
})
50+
}
51+
}
4052
const resolvers = useNitroUrlResolvers(event)
4153
let sitemapUrls = await buildSitemapUrls(definition, resolvers, runtimeConfig)
4254

0 commit comments

Comments
 (0)