我正在尝试重定向到/chat
页面当我登录。我使用auth0来处理身份验证。不确定错误是什么,因为我返回的是一个空字符串的props。但是错误不会影响网站和重定向工作正常。错误的类型是这里的主要问题。我不太确定在这里定义什么样的接口。
export const getServerSideProps: GetServerSideProps = async (context) => {
const { req, res } = context;
const session = await getSession(req, res);
if (session) {
return {
redirect: {
destination: "/chat",
},
};
}
return {
props: {},
};
};
到目前为止,我已经尝试进入GetServerSideProps
类型并相应地调整上下文,但它不起作用。我得到以下错误:
类型'(上下文:GetServerSidePropsContext <ParsedUrlQuery,PreviewData>)=> Promise <{redirect:{目的地:string;}; props?:undefined;}|“{...;}>”不能分配给类型“GetServerSideProps”。键入'Promise <{redirect:{目的地:string;}; props?:undefined;}|{props:{}; redirect?:undefined;}>'不能分配给类型' Promise <GetServerSidePropsResult <{[key:string]:any;}>>'.键入'{redirect:{目的地:string;}; props?:undefined;}|{props:{}; redirect?:undefined;}”不能分配给类型“GetServerSidePropsResult <{[key:string]:any;}>'.键入'{redirect:{目的地:string;}; props?:undefined;}”不能分配给类型“GetServerSidePropsResult <{[key:string]:any;}>'.键入'{redirect:{目的地:string;}; props?:undefined;}”不能赋值给类型“{props:{[key:string]:any;}| Promise <{[key:string]:any;}>;}'。属性' props '的类型不兼容。类型“undefined”不能赋值给类型“{[key:string]:any;}| Promise <{[key:string]:any;}>'. ts(2322)
下面是getServerSideProps上面的代码,以防万一:
import Head from "next/head";
import Link from "next/link";
import { useUser } from "@auth0/nextjs-auth0/client";
import { getSession } from "@auth0/nextjs-auth0";
import { GetServerSideProps } from "next";
export default function Home() {
const { isLoading, error, user } = useUser();
if (isLoading) return <div>Loading...</div>;
if (error) return <div>{error.message}</div>;
return (
<div>
<Head>
<title>Ask Me - Login or Signup</title>
</Head>
<div>
<div>
{user && <Link href="/api/auth/logout">Logout</Link>}
{!user && (
<>
<Link
href="/api/auth/login"
>
Login
</Link>
<Link
href="/api/auth/signup" >
Signup
</Link>
</>
)}
</div>
</div>
</div>
);
}
1条答案
按热度按时间2izufjch1#
你必须在重定向响应中包含
statusCode
prop 。在这种情况下,您希望使用临时重定向代码: