Skip to content

Commit 9c01c32

Browse files
authoredJan 11, 2023
[fix] prerendered endpoint callable from non-prerendered server load (#8453)
Fixes #8341
1 parent 0f283b8 commit 9c01c32

File tree

6 files changed

+42
-0
lines changed

6 files changed

+42
-0
lines changed
 

‎.changeset/angry-ways-divide.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
[fix] prerendered endpoint callable from non-prerendered server load

‎packages/kit/src/runtime/server/data/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export async function render_data(
3131
});
3232
}
3333

34+
state.initiator = route;
35+
3436
try {
3537
const node_ids = [...route.page.layouts, route.page.leaf];
3638
const invalidated = invalidated_data_nodes ?? node_ids.map(() => true);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { json } from '@sveltejs/kit';
2+
3+
export const prerender = true;
4+
5+
export function GET() {
6+
return json({ message: 'Im prerendered and called from a non-prerendered +page.server.js' });
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/** @type {import('./$types').PageServerLoad} */
2+
export async function load({ fetch }) {
3+
const res = await fetch('/prerendering/prerendered-endpoint/api');
4+
const json = await res.json();
5+
return json;
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
export let data;
3+
</script>
4+
5+
<h1>{data.message}</h1>

‎packages/kit/test/apps/basics/test/test.js

+17
Original file line numberDiff line numberDiff line change
@@ -941,6 +941,23 @@ test.describe('Load', () => {
941941

942942
expect(await page.textContent('h1')).toBe('true');
943943
});
944+
945+
test('Prerendered +server.js called from a non-prerendered +page.server.js works', async ({
946+
page,
947+
app,
948+
javaScriptEnabled
949+
}) => {
950+
if (javaScriptEnabled) {
951+
await page.goto('/');
952+
await app.goto('/prerendering/prerendered-endpoint/page');
953+
} else {
954+
await page.goto('/prerendering/prerendered-endpoint/page');
955+
}
956+
957+
expect(await page.textContent('h1')).toBe(
958+
'Im prerendered and called from a non-prerendered +page.server.js'
959+
);
960+
});
944961
});
945962

946963
test.describe('Nested layouts', () => {

0 commit comments

Comments
 (0)
Please sign in to comment.