mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
### What * Remove the erroring of force-dynamic is not able to use during static generation * Export the route segments properly in sitemap conventions ### Why We discovered this error is showing up when users are using force-dynamic with generating multi sitemaps. When you have a dynamic `route /[id]/route.js` , and you have generateSitemaps defined which is actually using `generateSitemaps` under the hood , then you set the route to dynamic with `export dynamic = 'force-dynamic'`. We should keep the route still as dynamic. `generateStaticParams` is only for generating the paths, which is static in build time. And the `force-dynamic` is going to be applied to each generated path. Closes NEXT-2881
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { type NextInstance, createNextDescribe } from 'e2e-utils'
|
|
|
|
async function getLastModifiedTime(next: NextInstance, pathname: string) {
|
|
const content = await (await next.fetch(pathname)).text()
|
|
return content.match(/<lastmod>([^<]+)<\/lastmod>/)[1]
|
|
}
|
|
|
|
createNextDescribe(
|
|
'app-dir - dynamic in generate params',
|
|
{
|
|
files: __dirname,
|
|
},
|
|
({ next, isNextDev }) => {
|
|
it('should render sitemap with generateSitemaps in force-dynamic config dynamically', async () => {
|
|
const firstTime = await getLastModifiedTime(
|
|
next,
|
|
isNextDev ? 'sitemap.xml/0' : '/sitemap/0.xml'
|
|
)
|
|
const secondTime = await getLastModifiedTime(
|
|
next,
|
|
isNextDev ? 'sitemap.xml/0' : '/sitemap/0.xml'
|
|
)
|
|
|
|
expect(firstTime).not.toEqual(secondTime)
|
|
})
|
|
|
|
it('should be able to call while generating multiple dynamic sitemaps', async () => {
|
|
expect(
|
|
(await next.fetch(isNextDev ? 'sitemap.xml/0' : '/sitemap/0.xml'))
|
|
.status
|
|
).toBe(200)
|
|
expect(
|
|
(await next.fetch(isNextDev ? 'sitemap.xml/1' : '/sitemap/1.xml'))
|
|
.status
|
|
).toBe(200)
|
|
})
|
|
|
|
it('should be able to call fetch while generating multiple dynamic pages', async () => {
|
|
expect((await next.fetch('/dynamic/0')).status).toBe(200)
|
|
expect((await next.fetch('/dynamic/1')).status).toBe(200)
|
|
})
|
|
}
|
|
)
|