开发者问题收集

TypeError:无法将未定义或空转换为对象 | NextAuth

2022-03-24
817

我正在尝试使用 Nextauth 登录。这是我的代码:

import { getProviders, signIn as SignIntoProvider} from "next-auth/react";

function signIn({ providers }) {
    return (
        <>
        {Object.values(providers).map((provider) => (
            <div key={provider.name}>
              <button onClick={() => SignIntoProvider(provider.id)}>
                Sign in with {provider.name}
              </button>
            </div>
          ))}
        </>
    );
}

export async function getServerSideProps() {
    const providers = await getProviders();

    return {
        props: {
            providers
        }
    }
}

export default signIn;

但是我收到此错误:

错误图片

我看到有人遇到了与我类似/相同的错误。我尝试了所有建议的解决方案。这是问题:

服务器错误:TypeError:无法将未定义或 null 转换为对象

当我尝试使用绿色钩子的解决方案时,什么都没有发生。甚至没有错误。

其他的也不起作用。

我做错了什么??? 祝一切顺利。

2个回答

对我来说,这很有帮助:

import { SessionProvider } from "next-auth/react";
export default function App({
  Component,
  pageProps: { session, ...pageProps },
}) {
  return (
    <SessionProvider session={session}>
      <Component {...pageProps} />
    </SessionProvider>
  );
}
Bohdan
2022-12-22

添加如下空值检查:

function signIn({ providers }) {
  return (
    <>
      {providers && !!Object.keys(providers).length && Object.values(providers).map((provider) => (
        <div key={provider.name}>
          <button onClick={() => SignIntoProvider(provider.id)}>
            Sign in with {provider.name}
          </button>
        </div>
      ))}
    </>
  );
}
Balagoni Harish
2022-03-24