bounty还有4天到期。回答此问题可获得+50声望奖励。pguardiario希望引起更多的注意这个问题。
这是我的第一个NextJs应用程序,我使用serverActions实验特性来管理表单提交并通过服务器端处理。
下面是我的代码:
import { redirect } from "next/navigation";
import { cookies } from 'next/headers'
import { authService } from "@/services";
async function logoutUser() {
"use server"
authService.logout();
cookies().delete('currentUser');
redirect('/');
}
export default () => {
return <>
<form action={logoutUser} className="flex flex-col gap-3">
<button className="btn btn-primary normal-case w-full" type="submit">Logout</button>
</form>
</>
}
字符串
这里的想法是,我想重定向回主页后,用户注销。
然而,每当代码执行时,我都会得到以下错误:
failed to get redirect response TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:11576:11) {
cause: RequestContentLengthMismatchError: Request body length does not match content-length header
at write (/Users/robison/Documents/Development/prototypes/watchlist-app/node_modules/next/dist/compiled/undici/index.js:1:67105)
at _resume (/Users/robison/Documents/Development/prototypes/watchlist-app/node_modules/next/dist/compiled/undici/index.js:1:66726)
at resume (/Users/robison/Documents/Development/prototypes/watchlist-app/node_modules/next/dist/compiled/undici/index.js:1:65413)
at connect (/Users/robison/Documents/Development/prototypes/watchlist-app/node_modules/next/dist/compiled/undici/index.js:1:65301) {
code: 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'
}
}
型
知道我哪里做错了吗
1条答案
按热度按时间snz8szmq1#
您可以尝试使用startTransition并从内部调用
logoutUser
。如果这不起作用,你可以尝试this article,它讨论了关于这个确切问题的一些修复,从你的错误日志来看,这个问题显然像是一个与undici
模块相关的错误。