Hello @Phil , thanks for your reply!
The blog posts preview doesn't work (locally too), only single pages.
This is the +layout.server.ts
import { createClient } from '$lib/prismicio';
import { enableAutoPreviews } from '@prismicio/svelte/kit';
export const prerender = 'auto';
export async function load({ url }) {
const client = createClient();
enableAutoPreviews({ client });
const navigation = await client.getSingle('main_nav');
const footer = await client.getSingle('footer');
return {
navigation,
footer,
url: url.pathname
};
}
This is the svelte.config.js
import adapter from '@sveltejs/adapter-netlify';
const config = {
kit: {
adapter: adapter({
edge: false,
split: false
}),
prerender: {
handleHttpError: ({ status, path, referrer }) => {
if (status === 404) {
console.warn(`Not found: ${path} (linked from ${referrer})`);
return;
}
throw error(status, `Error prerendering ${path}`);
}
}
}
};
export default config;
This is the blog/[uid]/+page.server.ts
import { createClient } from '$lib/prismicio';
import { error } from '@sveltejs/kit';
import type { PageServerLoad } from './$types';
export const prerender = false;
export const load: PageServerLoad = async ({ params, fetch, cookies }) => {
const client = createClient({ fetch, cookies });
const page = await client.getByUID('blog_post', params.uid).catch(() => null);
if (!page) throw error(404, 'Blog post not found');
const allPages = await client.getAllByType('blog_post', {
orderings: [{ field: 'document.last_publication_date', direction: 'asc' }]
});
const currentIndex = allPages.findIndex((p) => p.uid === params.uid);
const previousPage =
currentIndex !== -1 && currentIndex < allPages.length - 1 ? allPages[currentIndex + 1] : null;
const nextPage = currentIndex > 0 && currentIndex !== -1 ? allPages[currentIndex - 1] : null;
const tags = page.tags || [];
return {
page,
title: page.data.title || page.data.meta_title,
meta_title: page.data.meta_title || page.data.title,
meta_description: page.data.meta_description,
meta_image: page.data.meta_image,
tags,
nextPage,
previousPage,
relatedPosts: allPages
.filter((p) => p.uid !== params.uid && p.tags.some((tag) => tags.includes(tag)))
.slice(0, 3)
};
};
This is the routes/api/preview/+server.ts file:
export const prerender = false;
import { redirectToPreviewURL } from '@prismicio/svelte/kit';
import { createClient } from '$lib/prismicio.js';
export async function GET({ fetch, request, cookies }) {
const client = createClient({ fetch });
return await redirectToPreviewURL({ client, request, cookies });
}
Netlify functions log:
Hope you can figure it out…
Thanks!