SvelteKit 表单操作未返回成功/保持为 null

Nic*_*ckP 6 javascript svelte sveltekit

我的 +page.server.js 中有以下设置:

export const actions = {
    createScore: async ({ request }) => {
        const values = await request.formData();

        try {
            const instagram = values.get('username');
            const score = Number(values.get('score'));

            await prisma.score.create({
                data: {
                    score,
                    instagram
                }
            });

            return { success: true };
        } catch (err) {
            console.error(err);
            return fail(500, { message: 'Could not create the score.' });
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

运行良好,我在数据库中看到了该条目。但是,无论我如何努力,我都无法访问“表单”来检查前端是否成功返回。

我在 page.svelte 中执行以下操作

<script>
    export let form;
    console.log(form);
</script>
Run Code Online (Sandbox Code Playgroud)

运行表单时,控制台日志始终返回 null。

此外,以下内容永远不会呈现(告诉我我没有错过状态更改):

{#if form?.success}
<p>It Worked</p>
{/if}
Run Code Online (Sandbox Code Playgroud)

最后形成如下:

<form action="?/createScore" method="POST">
<input type="text" id="score" name="score" />
<input type="text" id="username" name="username" />
<button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

小智 1

我无法访问“表单”来检查前端是否成功返回。

也许你的情况有所不同,但当我第一次开始学习 SvelteKit 时,我也遇到过同样的问题。

就我而言,我关闭了+layout.js文件中的服务器端渲染,以便我可以访问window前端的对象:

export const ssr = false;(我在这里得到了。)

注释掉该行(以及重新处理我处理本地存储访问的方式)解决了我的问题。