SvelteKIt:收到错误“处理程序应该返回响应”,尽管我正在返回一个?

bet*_*ers 1 httprequest svelte sveltekit

我有一个简单的 API 端点服务器函数,它模仿授权 POST 请求:

/** @type {import('./$types').RequestHandler} */

import { json, error } from '@sveltejs/kit'

export async function POST({ request }) {
    const data = await request.json()

    if (!data.username || !data.password) {
        return error(400, 'Missing username or password.')
    }

    return json({ username: data.username, id: 1 })
}
Run Code Online (Sandbox Code Playgroud)

以及在以下位置使用此函数的表单+page.svelte

async function login() {
        const response = await fetch('/api/auth/login', {
            method: 'POST',
            body: JSON.stringify({
                username,
                password
            })
        })
        const resJSON = await response.json()
        console.log('Form submitted', resJSON)
    }
Run Code Online (Sandbox Code Playgroud)

但我在终端中收到错误:Error: Invalid response from route /api/auth/login: handler should return a Response object

我没有返回 json({}) 中的对象吗?

car*_*sV2 5

该函数error()不返回任何可返回的内容。事实上,它返回一个异常,你必须抛出这个异常,改变行

 return error(400, 'Missing username or password.')
Run Code Online (Sandbox Code Playgroud)

对此

throw error(400, 'Missing username or password.')
Run Code Online (Sandbox Code Playgroud)

将解决您的问题