typescript 使用getServerSideProps重定向将返回错误

qeeaahzv  于 2023-05-23  发布在  TypeScript
关注(0)|答案(1)|浏览(286)

我正在尝试重定向到/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>
  );
}
2izufjch

2izufjch1#

你必须在重定向响应中包含statusCode prop 。在这种情况下,您希望使用临时重定向代码:

return {
  redirect: {
    destination: "/chat",
    statusCode: 302
  }
};

相关问题