sveltekit how to stop rendering?

22 Views Asked by At

I got a page.server.ts like this

export const load: PageServerLoad = async (event: any) => {
    const token = event.locals.token
    try {
         const res = await getData(
            api.getProductByIdentifier + '/' + event.params.id,
            '',
            false,
         )
         if (res.data) {
            return res
         } else {
            redirect(302, '/contact')
         }
    } catch (error) {
        return { data: [] }
    }
}

and my +page.ts

<script lang="ts">
    export let data: any
    let product = replaceNewline(data.detail)
</script>
<div class="bg-white">
    {product.detail}
</div>

The problem is When my data is empty, the server doesn't redirect, and the +page.ts keep rendering,of course with error 500 internal error, because the product.detail never existed.

1

There are 1 best solutions below

0
angry kiwi On

Turn out, I just need to put redirect(302, '/contact') outside the try and catch. It id documented on sveltekit site.

It works great now