服务器错误:TypeError:无法将未定义或空转换为对象
2021-10-26
9999
代码如下
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
我从官方网站粘贴 NextAuth.js 示例代码时出现此错误。我拥有最新版本的 Node.js 和 Next.js。
您可以在此处找到整个源代码 https://github.com/aadipoddar/instagram-react
3个回答
确保您的 NEXTAUTH_URL=http://localhost:3000 而不是 https://localhost:3000
Ayomide Adelaja
2022-04-11
这是在
providers
实际有任何值之前调用
map
函数的结果。
您可以使用条件渲染来避免此类问题。
试试这个:
{providers && providers.length && Object.values(providers).map((provider) => ( ...
您可以通过将其存储在变量中使其看起来更美观。
像这样:
function signIn({ providers }) {
const checkProviders = (
providers &&
providers.length
);
return (
<>
{checkProviders && Object.values(providers).map((provider) => (
<div key={provider.name}>
<button onClick={() => SignIntoProvider(provider.id)}>
Sign in with {provider.name}
</button>
</div>
))}
</>
)
}
tomleb
2021-10-26
将您的 NEXTAUTH_URL 正确配置为您的客户端 URL,例如
NEXTAUTH_URL=http://localhost:3000
Akash Samal
2021-11-06