这是生成错误的函数。它是一个简单的函数,用于从会话中获取令牌。
4 |
5 | export async function getUserToken() {
> 6 | const session = await getServerSession(authOptions)
| ^
7 |
8 | return session?.user?.token
9 | }
我已经苦苦挣扎了几天,试图找出问题所在。到目前为止,我已经成功将其隔离到layout
和page
RSC,尝试使用next-auth
的getServerSession
。我需要能够传递会话以在后端进行请求,每当我尝试使用需要会话的API调用填充客户端组件时,就会抛出错误。
有什么见解或推荐的解决方法吗?
这是需要请求来填充TeamSwitcher
的主要布局。
export default async function RootLayout({ children, params: { lng } }: Props) {
const clients = await getClients()
return (
<>
<div className="flex flex-col">
<div className="border-b">
<div className="flex h-16 items-center px-4">
{/* @ts-expect-error Server Component */}
<MainNav
lng={lng}
title={siteConfig.name}
items={siteConfig.mainNav}
/>
<div className="ml-auto flex items-center space-x-4">
<TeamSwitcher clients={clients} />
{/* @ts-expect-error Server Component */}
<UserNav lng={lng} user={user} />
</div>
</div>
</div>
{children}
</div>
</>
)
}
这是 API 调用,一切都非常简单明了。
export async function getClients(): Promise<Client[]> {
const token = await getUserToken()
if (!token) throw Error("Missing token for request")
return await api
.headers({
accept: "application/json",
token,
})
.get("/clients")
.json()
}
getServerSession
)以执行重定向(如果未登录,则从索引重定向到登录等)。总体上也对这个错误感到困惑,我不知道为什么会出错。 - y_nkgetStaticProps
,但我仍然不确定我是否理解了这个问题。对我来说,似乎与静态到动态渲染有关,但我找不到任何清晰解释它的文档。 - Dan Castrillo